Я портирую проект с Makefile на cmake.В Makefile есть CFLAG / CXXFLAG -include "SystemTest.h"
.Я попытался добавить это в файл набора инструментов прямо в CMAKE_C_FLAGS
и CMAKE_CXX_FLAGS
, но затем тестовая компиляция не удалась, потому что он не может найти SystemTest.h
.
Я искал и нашел ответы, подобные этим: Могу ли язаставить cmake включать мой заголовочный файл в определенные цели? и cmake включает заголовок в каждый исходный файл , который выглядел многообещающе, но не работал для меня.
Вот строки, гдеЯ использую add_executable.Комментированный код - это то, что я уже пробовал:
add_executable(my_target ${SRC})
if (WIN32)
target_link_libraries(my_target PRIVATE module_a module_b module_c module_d module_e module_f)
elseif(UNIX)
target_link_libraries(my_target PRIVATE module_a module_b module_c module_d module_e module_f ${CURSES_LIBRARIES})
else(WIN32)
message(FATAL_ERROR "Not supported OS.")
endif(WIN32)
# set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -include SystemTest.h")
# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -include SystemTest.h")
# add_definitions(-include SystemTest.h)
# target_compile_definitions(cherrySim_runner
# PRIVATE $<$<COMPILE_LANGUAGE:C>:-include SystemTest.h>
# $<$<COMPILE_LANGUAGE:CXX>:-include SystemTest.h>
# )
# target_compile_definitions(cherrySim_runner "-include SystemTest.h")
Сбой CMake / gcc при компиляции файлов из module_b
с жалобами на то, что должно быть из SystemTest.h
.