【问题标题】:How to control compiler flag invoked when specifing CMAKE_CXX_STANDARD?指定cmake_cxx_standard时调用Compiler标志如何控制编译器标志?
【发布时间】:2016-06-30 20:35:52
【问题描述】:

我想让 cmake 管理“-std=c++14”编译器标志的包含。如here 所述,使用 CMAKE_CXX_STANDARD 很容易做到这一点。这归结为包括以下内容:

set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED on)

但是,当使用 gcc 时,这会导致包含“-std=gnu++14”,其中包含一些非标准功能。有没有办法让 cmake 在使用 CMAKE_CXX_STANDARD 而不是“-std=gnu++14”时调用“-std=c++14”编译器标志?

【问题讨论】:

    标签: c++11 cmake c++14


    【解决方案1】:

    您可以使用属性 CXX_EXTENSIONS 或全局变量 CMAKE_CXX_EXTENSIONS 在 -std=c++1n 和 -std=gnu++1n 之间切换。

    https://cmake.org/cmake/help/v3.1/prop_tgt/CXX_EXTENSIONS.html

    【讨论】:

    • 做到了……哇……它在 CMAKE_CXX_STANDARD 之前的 cmake 文档页面上。我原以为我所做的众多搜索之一会发现这些标志是相关的。无论如何,感谢您的正确答案!
    猜你喜欢
    • 2015-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多