CMakeDetermineCXXCompiler.cmake 1.5 KB

12345678910111213141516171819202122232425262728293031
  1. # determine the compiler to use for C++ programs
  2. # NOTE, a generator may set CMAKE_CXX_COMPILER before
  3. # loading this file to force a compiler.
  4. # use environment variable CXX first if defined by user, next use
  5. # the cmake variable CMAKE_GENERATOR_CXX which can be defined by a generator
  6. # as a default compiler
  7. IF(NOT CMAKE_CXX_COMPILER)
  8. FIND_PROGRAM(CMAKE_CXX_COMPILER_FULLPATH NAMES $ENV{CXX} ${CMAKE_GENERATOR_CXX} c++ g++ CC aCC cl bcc )
  9. GET_FILENAME_COMPONENT(CMAKE_CXX_COMPILER ${CMAKE_CXX_COMPILER_FULLPATH} NAME)
  10. SET(CMAKE_CXX_COMPILER ${CMAKE_CXX_COMPILER} CACHE STRING "C++ compiler")
  11. ENDIF(NOT CMAKE_CXX_COMPILER)
  12. MARK_AS_ADVANCED(CMAKE_CXX_COMPILER)
  13. # set this to notfound right after so that it is searched for each time this
  14. # file is included
  15. SET(CMAKE_CXX_COMPILER_FULLPATH NOTFOUND CACHE INTERNAL "full path to cxx compiler" FORCE)
  16. # test to see if the cxx compiler is gnu
  17. EXEC_PROGRAM(${CMAKE_CXX_COMPILER} ARGS -E ${CMAKE_ROOT}/Modules/CMakeTestGNU.c OUTPUT_VARIABLE CMAKE_COMPILER_OUTPUT RETURN_VALUE CMAKE_COMPILER_RETURN)
  18. IF(NOT CMAKE_COMPILER_RETURN)
  19. IF(${CMAKE_COMPILER_OUTPUT} MATCHES ".*THIS_IS_GNU.*" )
  20. SET(CMAKE_COMPILER_IS_GNUCXX 1)
  21. ENDIF(${CMAKE_COMPILER_OUTPUT} MATCHES ".*THIS_IS_GNU.*" )
  22. ENDIF(NOT CMAKE_COMPILER_RETURN)
  23. # configure all variables set in this file
  24. CONFIGURE_FILE(${CMAKE_ROOT}/Modules/CMakeCXXCompiler.cmake.in
  25. ${PROJECT_BINARY_DIR}/CMakeCXXCompiler.cmake IMMEDIATE)
  26. MARK_AS_ADVANCED(CMAKE_CXX_COMPILER_FULLPATH)