gpt4 book ai didi

c++ - 具有最低 cpp 标准的 cmake add_library

转载 作者:行者123 更新时间:2023-11-30 04:52:33 26 4
gpt4 key购买 nike

库至少需要 cpp14,但如果 cpp17 可用,它会解锁更多功能。我尝试了以下。

cmake_minimum_required(VERSION 3.10)
project(dummy)

add_library(awesomelib STATIC awesomelib.cpp awesomelib.h)
target_compile_features(awesomelib INTERFACE cxx_std_14)

add_executable(dummy14 main.cpp)
target_link_libraries(dummy14 awesomelib)
target_compile_features(dummy14 PRIVATE cxx_std_14)

add_executable(dummy17 main.cpp)
target_link_libraries(dummy17 awesomelib)
target_compile_features(dummy17 PRIVATE cxx_std_17)

我想要的是:

  1. dummy14 使用 C++14 标准编译
  2. dummy17 和 awesomelib 使用 C++17 标准编译

但是 awesomelib 根据 c++14 标准编译(仅一次)。


更新

为简单起见,我在同一个文件中显示了可执行文件。在实际设置中,库将位于单独的项目/存储库中,而用户将位于不同的项目中。我正在寻找图书馆如何宣传其最低要求。即它至少需要 c++14 标准,并且根据用户的不同,它必须使用用户拥有的任何最新版本进行编译。

最佳答案

我对您的 CMkaeLists.txt 文件添加了一些更改,它现在似乎可以工作了

cmake_minimum_required(VERSION 3.10)
project(dummy)
set (CMAKE_CXX_STANDARD 17)

add_library(awesomelib STATIC awesomelib.cpp awesomelib.h)
target_compile_features(awesomelib INTERFACE)

add_executable(dummy17 main.cpp)
target_link_libraries(dummy17 awesomelib)
target_compile_features(dummy17 PRIVATE cxx_std_17)

set (CMAKE_CXX_STANDARD 14)
add_executable(dummy14 main.cpp)
target_link_libraries(dummy14 awesomelib)
target_compile_features(dummy14 PRIVATE cxx_std_14)

enter image description here enter image description here enter image description here

关于c++ - 具有最低 cpp 标准的 cmake add_library,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54339014/

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