Як я можу використовувати сервер збірки з Keil uVision4 (MDK-ARM), сценарій збірки, використання makefile?


13

Я хотів би запускати щоденні збірки або зареєструвати / вчинити спровоковані складання проектів на основі Keil MDK-ARM До цих пір я вже дійшов із функцією пакетного файлу IDE. Це зажадає від вас , щоб побудувати проект , по крайней мере один раз в IDE, а потім перевірити в пакетному файлі і пов'язаних з ними .__iі ._iaфайли , створені в середовищі IDE.

Крім того, IDE додає багато файлів, визначених для користувача, у пакетний файл, наприклад, змінна Windows PATH. Це може стати проблемою для декількох розробників, оскільки пакетний файл для створення може бути змінений під час кожного комітету від іншого розробника.

Зрештою, потрібно просто відслідковувати різні перемикачі для armcc , armmasm та ArmLink .

Чи є спосіб використовувати більш стандартний makefile для створення проектів Keil uVision? Чи існує метод перекладу файлу проекту uVision у більш стійкий сценарій збірки?


Я думаю, що це чудово, що ви реалізуєте сервер збірки. На жаль, у мене немає досвіду роботи із системою розвитку Keil, тому я не можу вам реально допомогти. Я хотів би заохотити вас опублікувати рішення, якщо ви, коли ви його опрацюєте.
semaj

Я будую проекти Keil за допомогою пакетного сценарію без будь-яких залежностей PATH (крім самих інструментів Keil) або файлів __i / _ia. Чи можете ви поділитися інформацією про це?
Digikata

1
@digikata Я використовую опцію з IDE для створення пакетного файлу. Це описано в документації Кіля. Існує також командного рядка наводиться метод , описаний тут , але у мене були труднощі з отриманням належного консольний висновок з цієї команди. Другий метод запускає новий процес і дає вам можливість скопіювати вікно виводу у вихідний файл - не дуже вдалий метод для сервера збірки.
rmaVT

Для подальшого ознайомлення, сфера цього питання знаходиться в області перекриття, яким ми ділимось з іншими сайтами Stack Exchange. Питання щодо вбудованих специфічних ланцюжків інструментів, таких як Keil, безумовно, вітаються тут! Вони також вітаються в Stack Overflow , але не соромтеся запитувати в будь-якому місці.
Кевін Вермер

1
@KevinVermeer - Так, я збирався сам сказати те саме. rmaVT, ви можете переглядати питання з тегом "keil" на SO так само навчально, як і питання, позначені "keil" на EE SE .
davidcary

Відповіді:


8

Це найкращий метод, який я придумав нещодавно:

У параметрах збірки виберіть створити пакетний файл.

Коли ви ініціюєте збірку з IDE, створюється пакетний файл разом з декількома текстовими файлами на основі параметрів, встановлених у IDE. Вам потрібно відстежувати ці файли, створені IDE, у контролі джерела:

  • * .bat
  • * .ini
  • * .__ я
  • * ._ іа
  • * .lnp
  • * .sct

Тоді foo.bat можна запустити зі сценарію збірки.

Хоча це створює додаткові файли, які потрібно відстежувати в контролі джерела, якщо ви хочете надійно створити згенерованого пакетного файлу, але це усуває необхідність покладатися на файл проекту Keil (foo.uvproj) та IDE. Мені легше порівнювати відмінності і, таким чином, відслідковувати зміни до генерованих текстових файлів (* .__ i), які містять прапорці компілятора, ніж до файлу .uvproj. Крім того, пакетний файл безпосередньо викликає різні інструменти, зброю, armcc, armlink. Це дає вам прямий результат кожного з цих кроків, а також, здавалося б, кращий потенціал для перенесення проекту в інший ланцюжок інструментів у майбутньому, якщо це необхідно.

Я усвідомлюю, що ця відповідь дуже схожа на моє оригінальне запитання, але я справді не знаю кращого способу виконання сценарію складання за допомогою інструментів Keil. Я попросив подивитися, що може з’явитися від інших. Я не повністю не згоден з відповіддю від @digikata, але я вважаю за краще, щоб прапори компілятора та карта пам'яті мали простіший формат для відстеження та використовувати більше інструментів у стилі Unix для компіляції, а не запускати компіляцію «все в одному» з IDE. Я думаю, що компіляція "все в одному" з IDE добре працює на моїй робочій станції, але не для сервера збірки.

EDIT : Сервер збирання працює на Windows Server 2003. Я повинен визнати, що я поступився використанням інтерфейсу командного рядка IDE, а не пакетного файлу. Це просто стало надто складно в управлінні.


Питання щодо цієї роботи - якою операційною системою працює ваш сервер збирання? Linux, Windows 7, Windows Server 2003, Windows Server 2008?
БагрянийX

Дякуємо, що відповіли на запитання! Схоже, ланцюжок інструментів працює на Windows Server 2003 та 2008 R2 за документацію Keil . Подальше запитання щодо вашої редагування: як ви обробляєте зміни до файлу uvproj (наприклад, додавання нових файлів у проект для компіляції)? Чи потрібно вручну змінювати параметри компіляції у файлі, просуваному до сервера збирання?
CrimsonX

Ви повинні поставити .uvproj файл під контролем джерела. Це працює досить добре, хоча деякі налаштування користувача все ще залишаються у файлі, незважаючи на файл .userxxxxx, який також генерується. Сервер збирання просто повинен відкрити той самий "проект" і побудувати його.
rmaVT

3

Я закликаю ID Keil за допомогою командного рядка для складання (а не згенерованого пакетного файлу) з Makefile. Зазвичай це краще, щоб заблокувати файли проекту через scm або взяти довідкову копію збірки, перейменувавши відповідні назви проектів при цьому.

IDE із задоволенням працює з файлами проектів лише для читання, тому якщо ви заблокуєте їх, подразник полягає в тому, що вам потрібно розблокувати їх, щоб змінити налаштування, зберегти та перевірити їх. Якщо ви досить стабільні Справа в проекті це досить незначно - навіть бажано.

Якщо ви скористаєтесь посилальною копією, тоді збірка має тенденцію до розриву, коли змінюються налаштування проекту - особливо, коли файли проектів додаються або випадають з компіляції. Точне відображення цих змін не обов'язково є поганим, але це додатковий крок, необхідний для підтримки складання.

У будь-якому випадку перенаправлення виводу в файл журналу за допомогою параметра "-o" дозволяє отримати доступ до повного журналу виводу. Журнал за часом не виходить рядком, але, здається, він все є. (Я фактично розбираю формат помилок Keil до GNU fmt для інтеграції з середовищем CDT eclipse. Це дозволяє мені переходити безпосередньо до помилок / попереджень після збірки)

Збірка командного рядка також генерує файли __i, __ia, тому їм також не потрібно входити в контроль версій для сервера збирання.

Сподіваюсь, це допомагає.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.