我更新了GCC和CMake的版本。更新后,CMake不再为c++标准设置正确的命令行选项。
以下是我设置的方式:
add_library(project_options INTERFACE)
target_compile_features(project_options INTERFACE cxx_std_17)
然后我链接到项目选项
target_link_libraries(app PRIVATE project_options)
对于GCC 8.3(在rhel上(,这将std编译标志设置为-std=gnu17
现在设置为-std=c++11
如果我全局设置编译器,它会按预期工作:
set(CMAKE_CXX_STANDARD 17)
我错过了什么?或者这是新工具中的一个错误?
我的系统:
- GCC:11.1.0
- CMake:3.20.2
您需要将目标属性CXX_STANDARD
设置为适当的值。
set_target_properties(project_options PROPERTIES CXX_STANDARD 17)
有关更多详细信息,请参阅文档和此处。