带有set_property或target_compile_features的现代CMake - c++版本



我看到在"modern"cmake:

set_property(TARGET target PROPERTY CXX_STANDARD 17)

target_compile_features(target PRIVATE cxx_std_17)

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

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

这两种方式有什么主要优势吗,还是真的不重要?

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

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

相关内容

  • 没有找到相关文章

最新更新