在父目录中设置一次CMAKE_CXX_FLAGS并使其在子目录中有效

时间:2014-03-13 20:45:36

标签: c++ cmake

我有一个包含CMakeLists.txt文件的目录结构,如下所示:

Parent_DIR/CMakeLists.txt
Parent_DIR/src/CMakeLists.txt
Parent_DIR/test/CMakeLists.txt

我还有一个预处理器变量DOUBLE_PRECISION,它控制我的所有计算是用双精度还是浮点数完成的。我被告知我需要单独设置每个文件夹中的变量,或者用

set(DOUBLE_PRECISION 1)

set(CMAKE_CXX_FLAGS "-DDOUBLE_PRECISION")

我的问题是:有没有办法在父目录中设置此变量一次,而不必在每个CMakeLists.txt文件中设置它?每次都必须手动设置它似乎很容易出错。

2 个答案:

答案 0 :(得分:2)

而不是修改CMAKE_CXX_FLAGS添加CMake命令add_definitions

add_definitions(-DDOUBLE_PRECISION)
在使用Parent_DIR/CMakeLists.txt输入子目录之前,

add_subdirectory。该命令将预处理程序定义添加到当前目录及其下的源的编译器命令行。

答案 1 :(得分:0)

如果在缓存中设置变量,则将为整个项目,子目录和父目录中设置变量。将CACHE添加到set命令中。