Я хотел бы запускать ежедневные сборки или регистрировать / фиксировать сборки, основанные на Keil MDK-ARM. До сих пор у меня все шло с функцией пакетных файлов в IDE. Это потребует от вас , чтобы построить проект , по крайней мере один раз в IDE, а затем проверить в пакетном файле и связанных с ними .__i
и ._ia
файлы , созданные в среде IDE.
Кроме того, среда IDE помещает множество пользовательских вещей в пакетный файл, например переменную Windows PATH. Это может стать проблемой для нескольких разработчиков, поскольку пакетный файл для сборки может изменяться при каждом коммите от другого разработчика.
В конечном счете, нужно просто отслеживать различные переключатели для armcc , armasm и ArmLink .
Есть ли способ использовать более стандартный make-файл для создания проектов Keil uVision? Есть ли способ перевода файла проекта uVision в более удобный сценарий сборки?
Ответы:
Это лучший метод, который я придумал недавно:
В опциях сборки выберите создать пакетный файл.
Когда вы запускаете сборку из IDE, пакетный файл вместе с несколькими текстовыми файлами создаются на основе параметров, установленных в IDE. Вам необходимо отслеживать эти сгенерированные IDE файлы в системе контроля версий:
Затем foo.bat можно запустить из скрипта сборки.
Хотя это создает дополнительные файлы, которые необходимо отслеживать в системе контроля версий, если вы хотите надежно строить из сгенерированного пакетного файла, это устраняет необходимость полагаться на файл проекта Keil (foo.uvproj) и IDE. Мне легче сравнивать различия и, следовательно, отслеживать изменения в сгенерированных текстовых файлах (* .__ i), которые содержат флаги компилятора, чем в файле .uvproj. Кроме того, пакетный файл вызывает различные инструменты, armasm, armcc, armlink, напрямую. Это дает вам прямой вывод каждого из этих шагов, а также, по-видимому, лучший потенциал для переноса проекта в другую цепочку инструментов в будущем, если это необходимо.
Я понимаю, что этот ответ звучит очень похоже на мой первоначальный вопрос, но я действительно не знаю лучшего способа запустить сборку по сценарию с помощью инструментов Keil. Я попросил посмотреть, что может подойти от других. Я не совсем не согласен с ответом @digikata, но я предпочитаю иметь флаги компилятора и карту памяти в более простом формате для отслеживания и использовать больше инструментов в стиле Unix для компиляции, а не запускать компиляцию «все в одном» с IDE. Я думаю, что компиляция "все в одном" из IDE хорошо работает на моей рабочей станции, но не для сервера сборки.
РЕДАКТИРОВАТЬ : сервер сборки работает на Windows Server 2003. Я должен признаться, что я уступил в использовании интерфейса командной строки IDE, а не командный файл. Просто стало слишком сложно управлять.
источник
Я вызываю Keil IDE через командную строку для сборки (не сгенерированного пакетного файла) из Makefile. Обычно лучше заблокировать файлы проекта с помощью scm или взять эталонную копию сборки, переименовывая соответствующие имена проектов при этом.
Среда идеально подходит для работы с файлами проекта, доступными только для чтения, поэтому, если вы заблокируете их, раздражающим фактором будет то, что вам нужно разблокировать их, чтобы изменить настройки, сохранить и вернуть их обратно. Если вы работаете достаточно стабильно Смысл в проекте это довольно незначительный - даже желательно.
Если вы берете эталонную копию, то сборка имеет тенденцию ломаться при изменении настроек проекта - особенно когда файлы проекта добавляются или удаляются из компиляции. Точная фиксация этих изменений не обязательно плохая, но это дополнительный шаг, необходимый для поддержки сборок.
В любом случае, перенаправление вывода в файл журнала с помощью параметра «-o» позволяет получить доступ к полному журналу вывода. Журнал не выходит за линию, но, кажется, все там. (Я на самом деле анализирую формат ошибок Keil в GNU fmt для интеграции со средой eclipse CDT. Это позволяет мне сразу перейти к ошибкам / предупреждениям после сборки)
Сборка из командной строки также генерирует файлы __i, __ia, поэтому те, кому не требуется входить в систему контроля версий для сервера сборки.
Надеюсь это поможет.
источник