| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- 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)
|