Ho un solo intestazione C++ 11 biblioteca, quindi voglio configurarlo, usando CMake> 3.1, compilare caratteristiche sembra ragionevole modo per farlo:Come definire transitiva CXX_STANDARD C++ 11 in cmake
target_compile_features(my_header_lib INTERFACE cxx_range_for)
Ma preferirei non dover indicare le singole funzionalità, ma solo C++ 11 o C++ 14. Poi ho potuto provare a utilizzare il seguente:
set_property(TARGET my_target PROPERTY CXX_STANDARD 11)
Il problema è che my_target non può essere INTERFACCIA qui, non è supportato, e non riesco a definirlo PUBBLICO, quindi i consumatori (tanti Exes) del mio colpo di testa solo la volontà biblioteca ha automaticamente la configurazione di C++ 11 propagata dalla lib.
C'è un modo per definire uno standard 11/14 di alto livello, ma anche configurarlo per una sola libreria di intestazione (INTERFACE)? Preferirei non ricorrere al vecchio manuale -std = C++ 11.
In effetti, si tratta di una scelta deliberata di progettazione non sostenere una proprietà target 'INTERFACE_CXX_STANDARD'. Vedi anche la variabile 'CMAKE_CXX_STANDARD'. – steveire