[Cmake-commits] [cmake-commits] alex committed CMakeSystemSpecificInformation.cmake 1.42 1.43 CMakeKDevelop3.cmake NONE 1.1 CMakeCodeBlocks.cmake NONE 1.1 CMakeEclipseCDT4.cmake NONE 1.1

cmake-commits at cmake.org cmake-commits at cmake.org
Sun May 10 06:00:29 EDT 2009


Update of /cvsroot/CMake/CMake/Modules
In directory public:/mounts/ram/cvs-serv10291

Modified Files:
	CMakeSystemSpecificInformation.cmake 
Added Files:
	CMakeKDevelop3.cmake CMakeCodeBlocks.cmake 
	CMakeEclipseCDT4.cmake 
Log Message:
ENH: move the code which queries gcc for the system include dirs from
CMakeSystemSpecificInformation.cmake into a separate file,
CMakeEclipseCDT4.cmake
-if CMAKE_EXTRA_GENERATOR is set, i.e. either CodeBlocks or KDevelop3 or
EclipseCDT4, load a matching cmake script file, which can do things specific
for this generator
- added such files for Eclipse, KDevelop and CodeBlocks, one thing they all
do is they try to find the respective IDE and store it in the
CMAKE_(KDEVELOP3|CODEBLOCKS|ECLIPSE)_EXECUTABLE variable.
This could be used by cmake-gui to open the project it just generated with
the gui (not sure this is possible with eclipse).

Alex


--- NEW FILE: CMakeEclipseCDT4.cmake ---
# This file is included in CMakeSystemSpecificInformation.cmake if
# the Eclipse CDT4 extra generator has been selected.

FIND_PROGRAM(CMAKE_ECLIPSE_EXECUTABLE NAMES eclipse DOC "The Eclipse executable")


# The Eclipse generator needs to know the standard include path
# so that Eclipse ca find the headers at runtime and parsing etc. works better
# This is done here by actually running gcc with the options so it prints its
# system include directories, which are parsed then and stored in the cache.
MACRO(_DETERMINE_GCC_SYSTEM_INCLUDE_DIRS _lang _result)
  SET(${_result})
  SET(_gccOutput)
  FILE(WRITE "${CMAKE_BINARY_DIR}/CMakeFiles/dummy" "\n" )
  EXECUTE_PROCESS(COMMAND ${CMAKE_C_COMPILER} -v -E -x ${_lang} dummy
                  WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/CMakeFiles
                  ERROR_VARIABLE _gccOutput
                  OUTPUT_QUIET )
  FILE(REMOVE "${CMAKE_BINARY_DIR}/CMakeFiles/dummy")

  IF( "${_gccOutput}" MATCHES "> search starts here[^\n]+\n *(.+) *\n *End of (search) list" )
    SET(${_result} ${CMAKE_MATCH_1})
    STRING(REPLACE "\n" " " ${_result} "${${_result}}")
    SEPARATE_ARGUMENTS(${_result})
  ENDIF( "${_gccOutput}" MATCHES "> search starts here[^\n]+\n *(.+) *\n *End of (search) list" )
ENDMACRO(_DETERMINE_GCC_SYSTEM_INCLUDE_DIRS _lang)

# Now check for C
IF ("${CMAKE_C_COMPILER_ID}" MATCHES GNU  AND NOT  CMAKE_ECLIPSE_C_SYSTEM_INCLUDE_DIRS)
  _DETERMINE_GCC_SYSTEM_INCLUDE_DIRS(c _dirs)
  SET(CMAKE_ECLIPSE_C_SYSTEM_INCLUDE_DIRS "${_dirs}" CACHE INTERNAL "C compiler system include directories")
ENDIF ("${CMAKE_C_COMPILER_ID}" MATCHES GNU  AND NOT  CMAKE_ECLIPSE_C_SYSTEM_INCLUDE_DIRS)

# And now the same for C++
IF ("${CMAKE_CXX_COMPILER_ID}" MATCHES GNU  AND NOT  CMAKE_ECLIPSE_CXX_SYSTEM_INCLUDE_DIRS)
  _DETERMINE_GCC_SYSTEM_INCLUDE_DIRS(c++ _dirs)
  SET(CMAKE_ECLIPSE_CXX_SYSTEM_INCLUDE_DIRS "${_dirs}" CACHE INTERNAL "CXX compiler system include directories")
ENDIF ("${CMAKE_CXX_COMPILER_ID}" MATCHES GNU  AND NOT  CMAKE_ECLIPSE_CXX_SYSTEM_INCLUDE_DIRS)


--- NEW FILE: CMakeCodeBlocks.cmake ---
# This file is included in CMakeSystemSpecificInformation.cmake if
# the CodeBlocks extra generator has been selected.

FIND_PROGRAM(CMAKE_CODEBLOCKS_EXECUTABLE NAMES codeblocks DOC "The CodeBlocks executable")


Index: CMakeSystemSpecificInformation.cmake
===================================================================
RCS file: /cvsroot/CMake/CMake/Modules/CMakeSystemSpecificInformation.cmake,v
retrieving revision 1.42
retrieving revision 1.43
diff -C 2 -d -r1.42 -r1.43
*** CMakeSystemSpecificInformation.cmake	13 Mar 2009 20:52:58 -0000	1.42
--- CMakeSystemSpecificInformation.cmake	10 May 2009 10:00:27 -0000	1.43
***************
*** 36,75 ****
  
  
! # The Eclipse generator needs to know the standard include path
! # so that Eclipse ca find the headers at runtime and parsing etc. works better
! # This is done here by actually running gcc with the options so it prints its
! # system include directories, which are parsed then and stored in the cache.
! IF("${CMAKE_EXTRA_GENERATOR}" MATCHES "Eclipse")
! 
!   MACRO(_DETERMINE_GCC_SYSTEM_INCLUDE_DIRS _lang _result)
!     SET(${_result})
!     SET(_gccOutput)
!     FILE(WRITE "${CMAKE_BINARY_DIR}/CMakeFiles/dummy" "\n" )
!     EXECUTE_PROCESS(COMMAND ${CMAKE_C_COMPILER} -v -E -x ${_lang} dummy
!                    WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/CMakeFiles
!                    ERROR_VARIABLE _gccOutput
!                    OUTPUT_QUIET )
!     FILE(REMOVE "${CMAKE_BINARY_DIR}/CMakeFiles/dummy")
! 
!     IF( "${_gccOutput}" MATCHES "> search starts here[^\n]+\n *(.+) *\n *End of (search) list" )
!       SET(${_result} ${CMAKE_MATCH_1})
!       STRING(REPLACE "\n" " " ${_result} "${${_result}}")
!       SEPARATE_ARGUMENTS(${_result})
!     ENDIF( "${_gccOutput}" MATCHES "> search starts here[^\n]+\n *(.+) *\n *End of (search) list" )
!   ENDMACRO(_DETERMINE_GCC_SYSTEM_INCLUDE_DIRS _lang)
! 
!   # Now check for C
!   IF ("${CMAKE_C_COMPILER_ID}" MATCHES GNU  AND NOT  CMAKE_ECLIPSE_C_SYSTEM_INCLUDE_DIRS)
!     _DETERMINE_GCC_SYSTEM_INCLUDE_DIRS(c _dirs)
!     SET(CMAKE_ECLIPSE_C_SYSTEM_INCLUDE_DIRS "${_dirs}" CACHE INTERNAL "C compiler system include directories")
!   ENDIF ("${CMAKE_C_COMPILER_ID}" MATCHES GNU  AND NOT  CMAKE_ECLIPSE_C_SYSTEM_INCLUDE_DIRS)
! 
!   # And now the same for C++
!   IF ("${CMAKE_CXX_COMPILER_ID}" MATCHES GNU  AND NOT  CMAKE_ECLIPSE_CXX_SYSTEM_INCLUDE_DIRS)
!     _DETERMINE_GCC_SYSTEM_INCLUDE_DIRS(c++ _dirs)
!     SET(CMAKE_ECLIPSE_CXX_SYSTEM_INCLUDE_DIRS "${_dirs}" CACHE INTERNAL "CXX compiler system include directories")
!   ENDIF ("${CMAKE_CXX_COMPILER_ID}" MATCHES GNU  AND NOT  CMAKE_ECLIPSE_CXX_SYSTEM_INCLUDE_DIRS)
! 
! ENDIF("${CMAKE_EXTRA_GENERATOR}" MATCHES "Eclipse")
  
  
--- 36,45 ----
  
  
! # optionally include a file which can do extra-generator specific things, e.g.
! # CMakeEclipseCDT4.cmake asks gcc for the system include dirs for the Eclipse CDT4 generator
! IF(CMAKE_EXTRA_GENERATOR)
!   STRING(REPLACE " " "" _CMAKE_EXTRA_GENERATOR_NO_SPACES ${CMAKE_EXTRA_GENERATOR} )
!   INCLUDE("CMake${_CMAKE_EXTRA_GENERATOR_NO_SPACES}" OPTIONAL)
! ENDIF(CMAKE_EXTRA_GENERATOR)
  
  

--- NEW FILE: CMakeKDevelop3.cmake ---
# This file is included in CMakeSystemSpecificInformation.cmake if
# the KDevelop3 extra generator has been selected.

FIND_PROGRAM(CMAKE_KDEVELOP3_EXECUTABLE NAMES kdevelop DOC "The KDevelop3 executable")




More information about the Cmake-commits mailing list