CMake没有将编译器选项-std设置为gnu17或c++17,尽管我将target_compile_features设



我更新了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)

有关更多详细信息,请参阅文档和此处。

相关内容

最新更新