gpt4 book ai didi

c++ - CMake 使库需要 cxx 标准

转载 作者:行者123 更新时间:2023-11-28 01:42:31 38 4
gpt4 key购买 nike

我尝试让我的库目标依赖于 c++14。我怎样才能实现链接到我的库目标的目标也依赖于 c++14?

我尝试使用:

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

这适用于构建库,但是当我尝试使用 lib 编译其他目标时,C++14 未激活。

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

set_target_properties()

这样做的原因是,库 header 使用通用的 lambda 捕获和模板别名,如 std::remove_reference_t 和类似的,自 c++14 以来就在标准库中。

最佳答案

您正在寻找的(CMake 版本 >= 3.8)如下:

target_compile_features(lib PUBLIC cxx_std_14)

或者,对于 3.1 以上的 CMake 版本,通过明确指定您需要的功能,f.i.:

target_compile_features(lib PUBLIC cxx_alias_templates)

您使用的语法不正确,无法设置所需的标准。附带说明一下,使用 PUBLIC 而不是 INTERFACE 因为您还想用 C++14 编译库本身。

docs 中有更多详细信息.

关于c++ - CMake 使库需要 cxx 标准,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46593510/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com