compiler_introspection.cmake 935 B

1234567891011121314151617181920212223242526272829303132333435363738
  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. macro(info lang)
  14. string(APPEND info "\
  15. set(${lang}_STANDARD_DEFAULT ${CMAKE_${lang}_STANDARD_DEFAULT})
  16. set(${lang}_EXTENSIONS_DEFAULT ${CMAKE_${lang}_EXTENSIONS_DEFAULT})
  17. set(${lang}_FEATURES ${CMAKE_${lang}_COMPILE_FEATURES})
  18. set(${lang}_EXT_FLAG ${CMAKE_${lang}_EXTENSION_COMPILE_OPTION})
  19. ")
  20. foreach(standard ${ARGN})
  21. string(APPEND info "\
  22. set(${lang}${standard}_FLAG ${CMAKE_${lang}${standard}_STANDARD_COMPILE_OPTION})
  23. set(${lang}${standard}_EXT_FLAG ${CMAKE_${lang}${standard}_EXTENSION_COMPILE_OPTION})
  24. ")
  25. endforeach()
  26. endmacro()
  27. info(C 90 99 11 17 23)
  28. info(CXX 98 11 14 17 20 23)
  29. file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/info.cmake" "${info}")