【问题标题】:set CMAKE_CXX_FLAGS once in parent directory and have it valid in child directories在父目录中设置一次 CMAKE_CXX_FLAGS 并使其在子目录中有效
【发布时间】:2014-03-13 20:45:35
【问题描述】:

我有一个包含 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 文件中设置它?每次都要手动设置似乎容易出错。

【问题讨论】:

    标签: c++ cmake


    【解决方案1】:

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

    add_definitions(-DDOUBLE_PRECISION)
    

    在进入带有add_subdirectory 的子目录之前到您的Parent_DIR/CMakeLists.txt。该命令将预处理器定义添加到当前目录及以下目录中的源的编译器命令行。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2017-07-24
        • 2018-12-05
        • 2016-02-22
        • 1970-01-01
        • 2014-05-04
        • 1970-01-01
        • 1970-01-01
        • 2022-07-02
        • 2012-10-08
        相关资源
        最近更新 更多