现代 CMake - 带有 set_property 或 target_compile_features 的 C++ 版本
Posted
技术标签:
【中文标题】现代 CMake - 带有 set_property 或 target_compile_features 的 C++ 版本【英文标题】:Modern CMake - C++ version with set_property or target_compile_features 【发布时间】: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
,还可以指定他们想要的语言版本的功能,而不是特定版本;似乎它也允许比指定版本晚的任何版本,因此可能更灵活。
前者似乎更常见,但后者似乎被认为是更现代、更理想的方式。
要么有任何主要优势,还是真的不重要?
【问题讨论】:
【参考方案1】:除了您已经提到的优点之外,target_compile_features
还支持可用于控制传播到依赖项的 INTERFACE、PUBLIC 和 PRIVATE 关键字。
set_property
似乎可用于为源的子集指定不同的语言版本(这可能是个坏主意,但如果你必须这样做,你就必须这样做)。
【讨论】:
以上是关于现代 CMake - 带有 set_property 或 target_compile_features 的 C++ 版本的主要内容,如果未能解决你的问题,请参考以下文章