我的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 ")

09-06 12:02