Есть ли способ экспортировать предопределенные макросы из конфигурации сборки 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,

название заголовка устройства:

Название заголовка устройства.

Другие вопросы по тегам