cmake_minimum_required(VERSION 3.0) project(CompileFeatures) macro(run_test feature) if (";${CMAKE_CXX_COMPILE_FEATURES};" MATCHES ${feature}) add_library(test_${feature} OBJECT ${feature}.cpp) set_property(TARGET test_${feature} PROPERTY COMPILE_FEATURES "${feature}" ) else() message("Not supported: ${feature}") endif() endmacro() foreach(feature ${CMAKE_CXX_KNOWN_FEATURES}) run_test(${feature}) endforeach() add_executable(CompileFeatures main.cpp) set_property(TARGET CompileFeatures PROPERTY COMPILE_FEATURES "cxx_auto_type" ) add_executable(GenexCompileFeatures main.cpp) set_property(TARGET GenexCompileFeatures PROPERTY COMPILE_FEATURES "$<1:cxx_auto_type>;$<0:not_a_feature>" ) add_library(iface INTERFACE) set_property(TARGET iface PROPERTY INTERFACE_COMPILE_FEATURES "cxx_auto_type" ) add_executable(IfaceCompileFeatures main.cpp) target_link_libraries(IfaceCompileFeatures iface)