我正在将项目从Makefile移植到cmake。 Makefile -include "SystemTest.h"
中有一个CFLAG / CXXFLAG。我试图将其直接添加到我的工具链文件中,分别为CMAKE_C_FLAGS
和CMAKE_CXX_FLAGS
,但是由于无法找到SystemTest.h
,因此测试编译失败。
我搜索并找到了以下答案:Can I force cmake to include my header file in specific targets?和cmake include header into every source file看起来很有希望,但对我不起作用。
以下是我使用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")
当编译来自module_b
的文件并抱怨应该来自SystemTest.h
的文件时,CMake / gcc失败。