我的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
我不明白我做错了什么。有什么建议吗?
最佳答案
如注释中所述,使用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 ")