#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()