我的cmake文件中有以下内容:
#...
project(${EXECUTABLE_NAME})
set(CMAKE_CXX_FLAGS "-g -std=gnu++11")
option(DEBUG "Displays values and images at different steps" OFF)
if (DEBUG)
set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} " -DDEBUGGING ")
message("DEBUG = ON")
endif()
#...
我的代码中有这样的内容:
#ifdef DEBUGGING
if (flgIn == DISPLAY)
std::cout << val1 << " " << val2 << " " << val3 << std::endl;
#endif
当我这样做时
$ cmake -DDEBUG=OFF ..
$ make
工作正常。但是当我设置选项时
$ cmake -DDEBUG=ON ..
$ make
我收到以下错误:
c++: fatal error: no input files
compilation terminated.
/bin/sh: 1: -DDEBUGGING: not found
make[2]: *** [CMakeFiles/prj.dir/src/cpp/file.cpp.o] Error 127
我不明白我错了什么。有什么建议吗?
答案 0 :(得分:4)
与评论一样,使用target_compile_definitions
http://www.cmake.org/cmake/help/v3.0/command/target_compile_definitions.html
但是,对于遇到的问题,CMAKE_CXX_FLAGS是一个字符串,而不是一个列表。您可以通过将其作为字符串处理来向其添加内容:
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DDEBUGGING ")