CMAKE MAKE库需要CXX标准

CMake make library require cxx standard

本文关键字:CXX 标准 MAKE CMAKE      更新时间:2023-10-16

我尝试使我的库目标依赖于C 14。我该如何实现与我的库目标链接的目标,也取决于C 14?

我尝试使用:

add_library(lib SHARED ${FILES})
target_compile_options(lib INTERFACE CXX_STANDARD 14)

这可以构建库,但是当我尝试使用lib C 14编译其他目标时。

我知道,还有其他方法,但我无法让它们工作。即有:

set_target_properties()

这样做的原因是,库标头使用广义lambda捕获和模板别名(例如std::remove_reference_t和类似),这些别名自C 14。

您要寻找的内容(cmake版本> = 3.8)如下:

target_compile_features(lib PUBLIC cxx_std_14)

或,使用CMAKE版本以上3.1,通过明确指定所需的功能,F.I。:

target_compile_features(lib PUBLIC cxx_alias_templates)

您使用的语法对于设置所需标准是不正确的。另外,使用PUBLIC代替INTERFACE,因为您也想使用C 14编译库本身。

文档中的更多详细信息。