【问题标题】:Modern CMake - C++ version with set_property or target_compile_features现代 CMake - 带有 set_property 或 target_compile_features 的 C++ 版本
【发布时间】:2021-12-14 20:14:03
【问题描述】:

我在“现代”cmake 中看到了两种主要的方法:

set_property(TARGET target PROPERTY CXX_STANDARD 17)

target_compile_features(target PRIVATE cxx_std_17)

我了解使用target_compile_features,还可以指定他们想要的语言版本的功能,而不是特定版本;似乎它也允许比指定版本晚的任何版本,因此可能更灵活。

前者似乎更常见,但后者似乎被认为是更现代、更理想的方式。

要么有任何主要优势,还是真的不重要?

【问题讨论】:

    标签: c++ cmake build c++17 build-system


    【解决方案1】:

    除了您已经提到的优点之外,target_compile_features 还支持可用于控制传播到依赖项的 INTERFACE、PUBLIC 和 PRIVATE 关键字。

    set_property 似乎可用于为源的子集指定不同的语言版本(这可能是个坏主意,但如果你必须这样做,你就必须这样做)。

    【讨论】:

      猜你喜欢
      • 2011-11-24
      • 1970-01-01
      • 2018-07-21
      • 1970-01-01
      • 2014-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-20
      相关资源
      最近更新 更多