首页 > 解决方案 > 尽管我将 target_compile_features 设置为 cxx_std_17,但 CMake 并未将编译器选项 -std 设置为 gnu17 或 c++17

问题描述

我更新了 GCC 和 CMake 的版本。更新后 CMake 不再为 c++ 标准设置正确的命令行选项。

这是我的设置方式:

add_library(project_options INTERFACE)
target_compile_features(project_options INTERFACE cxx_std_17)

然后我链接到 project_options

target_link_libraries(app PRIVATE project_options)

使用 GCC 8.3(在 rhel 上),这会将 std 编译标志设置为-std=gnu17

现在设置为-std=c++11

如果我全局设置编译器,它会按预期工作:

set(CMAKE_CXX_STANDARD 17)

我错过了什么?或者这是新工具中的错误?

我的系统:

标签: c++cmake

解决方案


您需要将目标属性设置CXX_STANDARD为适当的值。

set_target_properties(project_options PROPERTIES CXX_STANDARD 17)

有关详细信息,请参阅文档此处


推荐阅读