C.cmake 930 B

123456789101112131415161718192021222324252627
  1. enable_language(C)
  2. function(check_language_feature_flags lang level)
  3. if(CMAKE_${lang}${level}_STANDARD_COMPILE_OPTION)
  4. #this property is an internal implementation detail of CMake
  5. get_property(known_features GLOBAL PROPERTY CMAKE_${lang}${level}_KNOWN_FEATURES)
  6. list(LENGTH known_features len)
  7. if(len LESS 1)
  8. message(FATAL_ERROR "unable to find known features of ${lang}${level}")
  9. endif()
  10. string(TOLOWER ${lang} lang_lower)
  11. set(known_name ${lang_lower}${level}_known_features)
  12. set(meta_name ${lang_lower}${level}_meta_feature)
  13. add_library(${known_name} STATIC a.c)
  14. target_compile_features(${known_name} PUBLIC ${known_features})
  15. add_library(${meta_name} STATIC a.c)
  16. target_compile_features(${meta_name} PUBLIC ${lang_lower}_std_${level})
  17. endif()
  18. endfunction()
  19. check_language_feature_flags(C 90)
  20. check_language_feature_flags(C 99)
  21. check_language_feature_flags(C 11)