Есть ли способ экспортировать предопределенные макросы из конфигурации сборки Keil?
Контекст:
Я пытаюсь автоматизировать некоторые из более приземленных задач во встроенной разработке с Keil. Конечный результат, к которому я стремлюсь, состоит в том, что щелчок по сборке в проекте Keil запустит этап предварительной сборки, который запускает весь код через Uncrustify (средство для улучшения исходного кода), чтобы убедиться, что он соответствует руководству по стилю компании и посту. шаг сборки, который затем запускает код через pc-lint (статический анализатор кода), чтобы выделить любой потенциально небезопасный код, который он может найти. Я написал утилиту для ПК, которая ищет в файле.uvproj макросы #define, пути включения и пути к файлам, которые необходимы для обоих инструментов, а затем изменяет пользовательские команды до и после сборки для вызова мои командные файлы, которые будут управлять обоими шагами. Часть uncrustify работает нормально, а часть lint создает некоторые разумные сообщения, но отношение сигнал / шум не так велико.
Моя проблема:
Lint продолжает создавать сообщения, которые, похоже, относятся к макросам, о которых знает компилятор Keil, но это не так. Я пытаюсь найти способ восполнить этот пробел. Я нашел таблицу предопределенных макросов, документированных на веб-сайте Keil, которая кажется хорошим началом, но вместо того, чтобы вручную копировать их в статический файл.lnt, я бы хотел найти способ получения актуальных значений в то время, когда проект будет построен. Таким образом, макрос "__ARMCC_VERSION", например, будет обновляться всякий раз, когда разработчик обновляет свой компилятор Keil, вместо того, чтобы застревать в какой-то момент времени, когда я копирую его вручную.
Я был бы рад, если бы кто-то мог ответить на мой вопрос напрямую, но я был бы одинаково рад, если бы у кого-то было жизнеспособное предложение для более простого альтернативного подхода, который я мог бы попробовать вместо этого. Большое спасибо!
1 ответ
Я предполагаю, что вы используете компилятор Keil ARM.
Из руководства пользователя по компилятору:
Чтобы вывести список макросов, определенных в командной строке, предопределенных компилятором и найденных в заголовочных и исходных файлах, используйте
--list_macros
с непустым исходным файлом.Чтобы вывести список только макросов, предопределенных компилятором и указанных в командной строке, используйте
--list_macros
с пустым исходным файлом.
РЕДАКТИРОВАТЬ:
Похоже, ваш SDK также добавляет несколько макросов.
Из руководства пользователя µVision:
В зависимости от использования MDK добавляются следующие управляющие строки:
__UVISION_VERSION:
Мажорная и минорная версия µVision. Например:
-D__UVISION_VERSION="520"
,RTE:
Установите, когда RTE используется. Например:
-D_RTE_
,__RTX:
Устанавливается, когда ядро RTX выбрано в параметрах "Цель" - "Цель" - "Операционная система". Не устанавливается при использовании RTE. Например:
-D__RTX
,__MICORLIB:
Установите, когда Использовать MicroLIB был включен в Опции для Цель - Цель. Например:
-D__MICROLIB
,__EVAL:
µVision работает в режиме оценки. Лицензия МДК-Лайт. Например:
-D__EVAL
,название заголовка устройства:
Название заголовка устройства.