Параметры компиляции CMake только для тестирования компиляции

#cmake #multiprocessing #cross-compiling

#cmake #многопроцессорность #перекрестная компиляция

Вопрос:

Я использую CMake для перекрестной компиляции проекта C для встроенной (гетерогенной) многоядерной системы. Компилятор принимает обязательный аргумент ( -t<type> , целевой тип). Этот флаг должен быть установлен для прохождения теста компилятора CMake. Я добавляю этот флаг в файл набора инструментов следующим образом:

 add_compile_options(-tMYPLATFORMTYPE)
  

Проблема с этим подходом заключается в том, что все файлы проекта будут скомпилированы с этим флагом. Есть ли способ настроить флаги компиляции только для тестовой компиляции, не влияя на конфигурацию основного проекта? (Примечание: В рамках проекта разные файлы должны иметь разные значения для этого флага.)

То, что я ищу, это что-то вроде:

 set(CMAKE_TRY_COMPILE_COMPILE_OPTIONS "-tMYPLATFORMTYPE")
  

Я мог бы отключить тест компиляции, но я бы предпочел сохранить его.

Комментарии:

1. all project files will be compiled with this flag — вы компилируете другие файлы для другой платформы?

2. @KamilCuk В некотором роде, это многоядерная система.

Ответ №1:

Вы можете проверить свойство IN_TRY_COMPILE и установить флаг только для конфигураций с пробной компиляцией:

 get_property(IS_IN_TRY_COMPILE GLOBAL PROPERTY IN_TRY_COMPILE)
if(IS_IN_TRY_COMPILE)
    add_compile_options(-tMYPLATFORMTYPE)
endif()