библиотека нуждается как минимум в 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)
Что я хочу:
- dummy14 для компиляции с использованием стандарта C ++ 14
- dummy17 и awesomelib для компиляции с использованиемстандарт C ++ 17
Но происходит то, что awesomelib компилируется (только один раз) в соответствии со стандартом c ++ 14.
Обновление
Я показал исполняемые файлы в одном файле для простоты.В реальной установке библиотека будет находиться в отдельном проекте / хранилище, а пользователи будут в другом проекте.Я ищу, как библиотека может рекламировать свои минимальные требования.т. е. для него требуется как минимум стандарт c ++ 14 и, в зависимости от пользователя, он должен быть скомпилирован с любой последней версией, которую имеет пользователь.