如何控制在指定CMAKE_CXX_STANDARD时调用的编译器标志?

doc*_*7b5 6 cmake c++11 c++14

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

set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED on)
Run Code Online (Sandbox Code Playgroud)

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

小智 6

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

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