如何在cmake中强制包含标头?

时间:2019-03-27 10:02:51

标签: c++ cmake

我正在将项目从Makefile移植到cmake。 Makefile -include "SystemTest.h"中有一个CFLAG / CXXFLAG。我试图将其直接添加到我的工具链文件中,分别为CMAKE_C_FLAGSCMAKE_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失败。

0 个答案:

没有答案