|
|
@@ -77,36 +77,60 @@ foreach(lang CXX C)
|
|
|
endif()
|
|
|
endforeach()
|
|
|
|
|
|
-add_executable(CompileFeatures main.cpp)
|
|
|
-set_property(TARGET CompileFeatures
|
|
|
- PROPERTY COMPILE_FEATURES "cxx_auto_type"
|
|
|
-)
|
|
|
-set_property(TARGET CompileFeatures
|
|
|
- PROPERTY CXX_STANDARD_REQUIRED TRUE
|
|
|
-)
|
|
|
+if (CMAKE_C_COMPILE_FEATURES)
|
|
|
+ string(FIND "${CMAKE_C_FLAGS}" "-std=" std_flag_idx)
|
|
|
+ if (std_flag_idx EQUAL -1)
|
|
|
+ add_executable(default_dialect_C default_dialect.c)
|
|
|
+ target_compile_definitions(default_dialect_C PRIVATE
|
|
|
+ DEFAULT_C11=$<EQUAL:${CMAKE_C_STANDARD_DEFAULT},11>
|
|
|
+ DEFAULT_C99=$<EQUAL:${CMAKE_C_STANDARD_DEFAULT},99>
|
|
|
+ DEFAULT_C90=$<EQUAL:${CMAKE_C_STANDARD_DEFAULT},90>
|
|
|
+ )
|
|
|
+ endif()
|
|
|
+endif()
|
|
|
+
|
|
|
+if (CMAKE_CXX_COMPILE_FEATURES)
|
|
|
+ string(FIND "${CMAKE_CXX_FLAGS}" "-std=" std_flag_idx)
|
|
|
+ if (std_flag_idx EQUAL -1)
|
|
|
+ add_executable(default_dialect default_dialect.cpp)
|
|
|
+ target_compile_definitions(default_dialect PRIVATE
|
|
|
+ DEFAULT_CXX14=$<EQUAL:${CMAKE_CXX_STANDARD_DEFAULT},14>
|
|
|
+ DEFAULT_CXX11=$<EQUAL:${CMAKE_CXX_STANDARD_DEFAULT},11>
|
|
|
+ DEFAULT_CXX98=$<EQUAL:${CMAKE_CXX_STANDARD_DEFAULT},98>
|
|
|
+ )
|
|
|
+ endif()
|
|
|
|
|
|
-add_executable(GenexCompileFeatures main.cpp)
|
|
|
-set_property(TARGET GenexCompileFeatures
|
|
|
- PROPERTY COMPILE_FEATURES "$<1:cxx_auto_type>;$<0:not_a_feature>"
|
|
|
-)
|
|
|
+ add_executable(CompileFeatures main.cpp)
|
|
|
+ set_property(TARGET CompileFeatures
|
|
|
+ PROPERTY COMPILE_FEATURES "cxx_auto_type"
|
|
|
+ )
|
|
|
+ set_property(TARGET CompileFeatures
|
|
|
+ PROPERTY CXX_STANDARD_REQUIRED TRUE
|
|
|
+ )
|
|
|
+
|
|
|
+ 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)
|
|
|
+ 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)
|
|
|
|
|
|
-add_executable(CompileFeaturesGenex genex_test.cpp)
|
|
|
-set_property(TARGET CompileFeaturesGenex PROPERTY CXX_STANDARD 11)
|
|
|
-target_compile_definitions(CompileFeaturesGenex PRIVATE HAVE_OVERRIDE_CONTROL=$<COMPILE_FEATURES:cxx_final,cxx_override>)
|
|
|
+ add_executable(CompileFeaturesGenex genex_test.cpp)
|
|
|
+ set_property(TARGET CompileFeaturesGenex PROPERTY CXX_STANDARD 11)
|
|
|
+ target_compile_definitions(CompileFeaturesGenex PRIVATE HAVE_OVERRIDE_CONTROL=$<COMPILE_FEATURES:cxx_final,cxx_override>)
|
|
|
|
|
|
-add_executable(CompileFeaturesGenex2 genex_test.cpp)
|
|
|
-target_compile_features(CompileFeaturesGenex2 PRIVATE cxx_constexpr)
|
|
|
-target_compile_definitions(CompileFeaturesGenex2 PRIVATE HAVE_OVERRIDE_CONTROL=$<COMPILE_FEATURES:cxx_final,cxx_override>)
|
|
|
+ add_executable(CompileFeaturesGenex2 genex_test.cpp)
|
|
|
+ target_compile_features(CompileFeaturesGenex2 PRIVATE cxx_constexpr)
|
|
|
+ target_compile_definitions(CompileFeaturesGenex2 PRIVATE HAVE_OVERRIDE_CONTROL=$<COMPILE_FEATURES:cxx_final,cxx_override>)
|
|
|
|
|
|
-add_library(noexcept_iface INTERFACE)
|
|
|
-target_compile_features(noexcept_iface INTERFACE cxx_noexcept)
|
|
|
-add_executable(CompileFeaturesGenex3 genex_test.cpp)
|
|
|
-target_link_libraries(CompileFeaturesGenex3 PRIVATE noexcept_iface)
|
|
|
-target_compile_definitions(CompileFeaturesGenex3 PRIVATE HAVE_OVERRIDE_CONTROL=$<COMPILE_FEATURES:cxx_final,cxx_override>)
|
|
|
+ add_library(noexcept_iface INTERFACE)
|
|
|
+ target_compile_features(noexcept_iface INTERFACE cxx_noexcept)
|
|
|
+ add_executable(CompileFeaturesGenex3 genex_test.cpp)
|
|
|
+ target_link_libraries(CompileFeaturesGenex3 PRIVATE noexcept_iface)
|
|
|
+ target_compile_definitions(CompileFeaturesGenex3 PRIVATE HAVE_OVERRIDE_CONTROL=$<COMPILE_FEATURES:cxx_final,cxx_override>)
|
|
|
+endif()
|