库至少需要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)
我想要的是:
-
使用C++ 14标准编译
-
DUMY17和AWESOMILB使用C++ 17标准编译
但是发生的是AWESOMILB是根据C++ 14 STD编译的(只有一次)。
更新
为了简单起见,我在同一个文件中显示了可执行文件。在实际设置中,库将位于单独的项目/存储库中,用户将位于不同的项目中。我在寻找图书馆如何宣传其最低要求。即,它至少需要C++ 14标准,并且取决于用户,它必须用用户所拥有的任何最新版本编译。