Модульные тесты для макросов препроцессора для кросс-компиляции и CMake - PullRequest
2 голосов
/ 09 июля 2020

Наш проект строится с помощью CMake на нескольких платформах, включая Windows, Linux и кросс-компиляцию на некоторых встроенных ОС, описанных с помощью специальных файлов инструментальной цепочки CMake.

В случае кросс-компиляции мы должны поддерживать наборы макросов препроцессора.

Это отражается в CMakeLists.txt следующим образом.

Файл embedded_os1.toolchain.cmake

set(CMAKE_SYSTEM_NAME Generic)
set(CMAKE_SYSTEM_PROCESSOR ARM)

set(CMAKE_C_COMPILER /path/to/cross-compiler)

# blah-blah-blah

set(embedded_OS1 TRUE)

... и мы есть аналогичные файлы для других встроенных ОС.

Файл CMakeLists.txt

set(CMAKE_EXPORT_COMPILE_COMMANDS 1)

if(embedded_OS1)
    add_definitions(-Dmacro1 -Dmacro2)
elseif(embedded_OS2)
    add_definitions(-Dmacro3 -Dmacro4)
elseif(embedded_OS3)
    add_definitions(-Dmacro1 -Dmacro4)
endif()

Я хотел бы выполнить некоторую автоматическую c проверку правильности установки всех макросов препроцессора.

Я легко могу это сделать с юнит-тестами на Windows и Linux.

Но нет возможности компилировать и запускать исполняемые файлы на встроенных ОС, я могу компилировать только stati c библиотеки, которые затем подписываются, помещают образы прошивки, et c, et c. И все, что у меня есть на P C, кроме библиотеки, - это файл JSON с вызовами компилятора, сгенерированный EXPORT_COMPILE_COMMANDS.

Что вы могли бы предложить?

1 Ответ

1 голос
/ 09 июля 2020

Я бы сделал это с помощью макроса #warning и проверил бы вывод компиляции с помощью bash чего угодно. Затем вы можете установить Werror для этих файлов и получить проверку во время компиляции. Или просто используйте #error (спасибо KamilCuk)

Другой способ - копаться в проверочных двоичных файлах, которые помогают увидеть, есть ли в цепочке инструментов потоки или что-то еще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...