我是cmake的新手,我正在用它构建一些c ++ 11代码(特别是一组模板别名.)我想使用CXX_STANDARD属性来希望通过简单地添加-std = c来涵盖所有平台和问题++ 11到cxxflags,之前对我有用:
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
Run Code Online (Sandbox Code Playgroud)
但是当我改变它
set_property(GLOBAL PROPERTY CXX_STANDARD 11)
set_property(GLOBAL PROPERTY CXX_STANDARD_REQUIRED true)
Run Code Online (Sandbox Code Playgroud)
cmake没有告诉编译器使用c ++ 11.我对后一个代码做错了什么?
小智 4
CMAKE_CXX_STANDARD 不是全局属性,而是变量。 http://www.cmake.org/cmake/help/v3.1/variable/CMAKE_CXX_STANDARD.html#variable:CMAKE_CXX_STANDARD
所以你需要的是
set( CMAKE_CXX_STANDARD 11 )
Run Code Online (Sandbox Code Playgroud)
在定义任何目标之前。