45 lines
1.1 KiB
CMake
45 lines
1.1 KiB
CMake
|
|
cmake_minimum_required(VERSION 3.0)
|
|
|
|
project(CompileFeatures)
|
|
|
|
if (NOT CMAKE_CXX_COMPILE_FEATURES)
|
|
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/dummy.cpp"
|
|
"int main(int,char**) { return 0; }\n"
|
|
)
|
|
add_executable(CompileFeatures "${CMAKE_CURRENT_BINARY_DIR}/dummy.cpp")
|
|
return()
|
|
endif()
|
|
|
|
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)
|