compiler_introspection.cmake 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. enable_language(C CXX)
  2. set(info "")
  3. if(MSVC_TOOLSET_VERSION)
  4. string(APPEND info "
  5. set(MSVC_TOOLSET_VERSION ${MSVC_TOOLSET_VERSION})
  6. ")
  7. endif()
  8. if(CMAKE_XCODE_BUILD_SYSTEM)
  9. string(APPEND info "
  10. set(CMAKE_XCODE_BUILD_SYSTEM ${CMAKE_XCODE_BUILD_SYSTEM})
  11. ")
  12. endif()
  13. if(XCODE_VERSION)
  14. string(APPEND info "
  15. set(XCODE_VERSION ${XCODE_VERSION})
  16. ")
  17. endif()
  18. macro(info lang)
  19. string(APPEND info "\
  20. set(${lang}_STANDARD_DEFAULT ${CMAKE_${lang}_STANDARD_DEFAULT})
  21. set(${lang}_EXTENSIONS_DEFAULT ${CMAKE_${lang}_EXTENSIONS_DEFAULT})
  22. set(${lang}_FEATURES ${CMAKE_${lang}_COMPILE_FEATURES})
  23. set(${lang}_EXT_FLAG ${CMAKE_${lang}_EXTENSION_COMPILE_OPTION})
  24. ")
  25. foreach(standard ${ARGN})
  26. string(APPEND info "\
  27. set(${lang}${standard}_FLAG ${CMAKE_${lang}${standard}_STANDARD_COMPILE_OPTION})
  28. set(${lang}${standard}_EXT_FLAG ${CMAKE_${lang}${standard}_EXTENSION_COMPILE_OPTION})
  29. ")
  30. endforeach()
  31. endmacro()
  32. info(C 90 99 11 17 23)
  33. info(CXX 98 11 14 17 20 23)
  34. file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/info.cmake" "${info}")