]> Creatis software - gdcm.git/blobdiff - CMake/CMakeLists.txt
ENH: Some cleanups
[gdcm.git] / CMake / CMakeLists.txt
index e0970553cf28a98f956aa343b90d9e5033ac3012..385d5f48db6e31c517c6d5a64ab7ea9d3b1d6c24 100644 (file)
-#-----------------------------------------------------------------------------
-# Help outside projects link against gdcm
+# Generate the GDCMConfig.cmake file in the build tree. Also configure
+# one for installation. The file tells external projects how to use
+# GDCM.
+
+# Help store a literal dollar in a string.  CMake 2.2 allows escaped
+# dollars but we have to support CMake 2.0.
+SET(DOLLAR "$")
 
-EXPORT_LIBRARY_DEPENDENCIES(${GDCM_BINARY_DIR}/GDCMLibraryDepends.cmake)
+#-----------------------------------------------------------------------------
+# Settings shared between the build tree and install tree.
 
-# Save the compiler settings so another project can import them.
+EXPORT_LIBRARY_DEPENDENCIES(
+  ${GDCM_BINARY_DIR}/GDCMLibraryDepends.cmake)
 INCLUDE(${CMAKE_ROOT}/Modules/CMakeExportBuildSettings.cmake)
-CMAKE_EXPORT_BUILD_SETTINGS(${GDCM_BINARY_DIR}/GDCMBuildSettings.cmake)
-#INSTALL_FILES(/lib/gdcm .cmake GDCMBuildSettings)
-
-# For GDCM from build tree:
-SET(GDCM_USE_FILE ${GDCM_SOURCE_DIR}/GDCMUse.cmake)
-SET(GDCM_INCLUDE_DIRS
-  ${GDCM_BINARY_DIR}/     #for gdcmConfigure.h
-  ${GDCM_SOURCE_DIR}/src  #for main gdcm include
-  )
-SET(GDCM_LIBRARY_DIRS ${LIBRARY_OUTPUT_PATH})
-SET(GDCM_LIBRARY_DEPENDS_FILE ${GDCM_BINARY_DIR}/GDCMLibraryDepends.cmake)
-
-# For installed GDCM:
-SET(GDCM_USE_FILE ${CMAKE_INSTALL_PREFIX}/lib/GDCM-${GDCM_VERSION}/GDCMUse.cmake)
-SET(GDCM_INCLUDE_DIRS ${CMAKE_INSTALL_PREFIX}/include/GDCM-${GDCM_VERSION})
-SET(GDCM_LIBRARY_DIRS ${CMAKE_INSTALL_PREFIX}/lib/GDCM-${GDCM_VERSION})
-SET(GDCM_LIBRARY_DEPENDS_FILE ${CMAKE_INSTALL_PREFIX}/lib/GDCM-${GDCM_VERSION}/GDCMLibraryDepends.cmake)
-CONFIGURE_FILE(${GDCM_SOURCE_DIR}/GDCMConfig.cmake.in
-               ${GDCM_BINARY_DIR}/GDCMConfig.cmake @ONLY IMMEDIATE)
+CMAKE_EXPORT_BUILD_SETTINGS(
+  ${GDCM_BINARY_DIR}/GDCMBuildSettings.cmake)
+
+IF(NOT GDCM_INSTALL_NO_DEVELOPMENT)
+  INSTALL_FILES(${GDCM_INSTALL_PACKAGE_DIR} FILES
+    ${CMAKE_CURRENT_SOURCE_DIR}/UseGDCM.cmake
+    ${GDCM_BINARY_DIR}/GDCMLibraryDepends.cmake
+    ${GDCM_BINARY_DIR}/GDCMBuildSettings.cmake
+    )
+ENDIF(NOT GDCM_INSTALL_NO_DEVELOPMENT)
+
+#-----------------------------------------------------------------------------
+# Settings specific to the build tree.
+
+# The install-only section is empty for the build tree.
+SET(GDCM_CONFIG_INSTALL_ONLY)
+
+# The "use" file.
+SET(GDCM_USE_FILE_CONFIG 
+  ${CMAKE_CURRENT_SOURCE_DIR}/UseGDCM.cmake)
+
+# The build settings file.
+SET(GDCM_BUILD_SETTINGS_FILE_CONFIG 
+  ${GDCM_BINARY_DIR}/GDCMBuildSettings.cmake)
+
+# The library directories.
+SET(GDCM_LIBRARY_DIRS_CONFIG ${GDCM_LIBRARY_DIRS})
+
+# The runtime directories.
+SET(GDCM_RUNTIME_DIRS_CONFIG ${GDCM_RUNTIME_DIRS})
+
+# The include directories.
+SET(GDCM_INCLUDE_DIRS_CONFIG ${GDCM_INCLUDE_PATH})
+
+# The library dependencies file.
+SET(GDCM_LIBRARY_DEPENDS_FILE 
+  ${GDCM_BINARY_DIR}/GDCMLibraryDepends.cmake)
+
+# The data dir.
+SET(GDCM_DATA_DIR_CONFIG
+  ${GDCM_DATA_DIR})
+
+# The examples dir.
+SET(GDCM_EXAMPLES_DIR_CONFIG 
+  ${GDCM_EXAMPLES_DIR})
+
+# The templates dir.
+#SET(GDCM_TEMPLATES_DIR_CONFIG 
+#  ${GDCM_TEMPLATES_DIR})
+
+# The resources dir.
+#SET(GDCM_RESOURCES_DIR_CONFIG 
+#  ${GDCM_RESOURCES_DIR})
+
+# The CMake macros dir.
+SET(GDCM_CMAKE_DIR_CONFIG 
+  ${GDCM_CMAKE_DIR})
+
+# The Tcl/Tk options.
+#SET(GDCM_TCL_PACKAGE_INDEX_DIR_CONFIG ${GDCM_TCL_PACKAGE_INDEX_DIR})
+
+# The Python options.
+SET(GDCM_PYTHON_MODULE_DIR_CONFIG ${GDCM_PYTHON_MODULE_DIR})
+
+# The Doxygen options.
+SET(GDCM_DOXYGEN_DIR_CONFIG ${GDCM_SOURCE_DIR}/Utilities/Doxygen)
+
+# The VTK options.
+SET(GDCM_VTK_DIR_CONFIG ${VTK_DIR})
+
+# The build configuration information.
+SET(GDCM_CONFIGURATION_TYPES_CONFIG ${GDCM_CONFIGURATION_TYPES})
+SET(GDCM_BUILD_TYPE_CONFIG ${CMAKE_BUILD_TYPE})
+
+# Configure GDCMConfig.cmake for the build tree.
+CONFIGURE_FILE(
+  ${CMAKE_CURRENT_SOURCE_DIR}/GDCMConfig.cmake.in
+  ${GDCM_BINARY_DIR}/GDCMConfig.cmake @ONLY IMMEDIATE)
+
+#-----------------------------------------------------------------------------
+# Settings specific to the install tree.
+
+# The "use" file.
+SET(GDCM_USE_FILE_CONFIG 
+  ${DOLLAR}{GDCM_INSTALL_PREFIX}${GDCM_INSTALL_PACKAGE_DIR}/UseGDCM.cmake)
+
+# The build settings file.
+SET(GDCM_BUILD_SETTINGS_FILE_CONFIG 
+  ${DOLLAR}{GDCM_INSTALL_PREFIX}${GDCM_INSTALL_PACKAGE_DIR}/GDCMBuildSettings.cmake)
+
+# The library directories.
+IF(CYGWIN AND GDCM_BUILD_SHARED_LIBS)
+  # In Cygwin programs directly link to the .dll files.
+  SET(GDCM_LIBRARY_DIRS_CONFIG 
+    ${DOLLAR}{GDCM_INSTALL_PREFIX}${GDCM_INSTALL_BIN_DIR})
+ELSE(CYGWIN AND GDCM_BUILD_SHARED_LIBS)
+  SET(GDCM_LIBRARY_DIRS_CONFIG 
+    ${DOLLAR}{GDCM_INSTALL_PREFIX}${GDCM_INSTALL_LIB_DIR})
+ENDIF(CYGWIN AND GDCM_BUILD_SHARED_LIBS)
+
+# The runtime directories.
+IF(WIN32)
+  SET(GDCM_RUNTIME_DIRS_CONFIG 
+    ${DOLLAR}{GDCM_INSTALL_PREFIX}${GDCM_INSTALL_BIN_DIR})
+ELSE(WIN32)
+  SET(GDCM_RUNTIME_DIRS_CONFIG 
+    ${DOLLAR}{GDCM_INSTALL_PREFIX}${GDCM_INSTALL_LIB_DIR})
+ENDIF(WIN32)
+
+# The include directories.
+SET(GDCM_INCLUDE_DIRS_CONFIG
+  ${DOLLAR}{GDCM_INSTALL_PREFIX}${GDCM_INSTALL_INCLUDE_DIR})
+
+# The library dependencies file.
+SET(GDCM_LIBRARY_DEPENDS_FILE 
+  ${DOLLAR}{GDCM_INSTALL_PREFIX}${GDCM_INSTALL_PACKAGE_DIR}/GDCMLibraryDepends.cmake)
+
+# The data dir.
+SET(GDCM_DATA_DIR
+  ${DOLLAR}{GDCM_INSTALL_PREFIX}${GDCM_INSTALL_DATA_DIR}/Data)
+
+# The examples dir.
+SET(GDCM_EXAMPLES_DIR_CONFIG 
+  ${DOLLAR}{GDCM_INSTALL_PREFIX}${GDCM_INSTALL_DATA_DIR}/Examples)
+
+# The templates dir.
+#SET(GDCM_TEMPLATES_DIR_CONFIG 
+# ${DOLLAR}{GDCM_INSTALL_PREFIX}${GDCM_INSTALL_INCLUDE_DIR}/Templates)
+
+# The resources dir.
+#SET(GDCM_RESOURCES_DIR_CONFIG 
+#  ${DOLLAR}{GDCM_INSTALL_PREFIX}${GDCM_INSTALL_DATA_DIR}/Resources)
+
+# The CMake macros dir.
+SET(GDCM_CMAKE_DIR_CONFIG 
+  ${DOLLAR}{GDCM_INSTALL_PREFIX}${GDCM_INSTALL_PACKAGE_DIR}/CMake)
+
+# The Tcl/Tk options.
+#SET(GDCM_TCL_PACKAGE_INDEX_DIR_CONFIG 
+#  ${DOLLAR}{GDCM_INSTALL_PREFIX}${GDCM_INSTALL_LIB_DIR}/tcl)
+
+# The Python options.
+#IF(WIN32)
+#  SET(python_subdir "")
+#ELSE(WIN32)
+#  IF(PYTHON_EXECUTABLE)
+#    EXEC_PROGRAM("${PYTHON_EXECUTABLE}" ARGS "-V" OUTPUT_VARIABLE version)
+#    STRING(REGEX REPLACE "^(Python )([0-9]\\.[0-9])(.*)$" "\\2" 
+#      major_minor "${version}")
+#    SET(python_subdir "python${major_minor}/")
+#  ELSE(PYTHON_EXECUTABLE)
+#    SET(python_subdir "python2.4/")
+#  ENDIF(PYTHON_EXECUTABLE)
+#ENDIF(WIN32)
+#SET(GDCM_PYTHON_MODULE_DIR_CONFIG 
+#  ${DOLLAR}{GDCM_INSTALL_PREFIX}${GDCM_INSTALL_LIB_DIR}/../${python_subdir}site-packages)
+
+# The Doxygen options.
+SET(GDCM_DOXYGEN_DIR_CONFIG 
+  ${DOLLAR}{GDCM_INSTALL_PREFIX}${GDCM_INSTALL_DOXYGEN_DIR})
+
+# The VTK options.
+# If VTK_BINARY_DIR is set, then GDCM is part of a larger parent project
+# that also builds VTK. In that case, GDCM_VTK_INSTALL_PACKAGE_DIR
+# should be set to the value of VTK_INSTALL_PACKAGE_DIR. Otherwise, if not set,
+# then we are using an outside VTK whose location will not change when we
+# install.
+IF(VTK_BINARY_DIR)
+  IF(NOT GDCM_VTK_INSTALL_PACKAGE_DIR)
+    MESSAGE(
+      FATAL_ERROR 
+      "GDCM_VTK_INSTALL_PACKAGE_DIR must be set by the parent project to the value of VTK_INSTALL_PACKAGE_DIR it uses to configure VTK.")
+  ENDIF(NOT GDCM_VTK_INSTALL_PACKAGE_DIR)
+  SET(GDCM_VTK_DIR_CONFIG ${GDCM_VTK_INSTALL_PACKAGE_DIR})
+ELSE(VTK_BINARY_DIR)
+  SET(GDCM_VTK_DIR_CONFIG ${VTK_DIR})
+ENDIF(VTK_BINARY_DIR)
+
+# The build configuration information.
+# The install tree only has one configuration.
+SET(GDCM_CONFIGURATION_TYPES_CONFIG)
+
+# Configure GDCMConfig.cmake for the install tree.
+
+# Construct the proper number of GET_FILENAME_COMPONENT(... PATH)
+# calls to compute the installation prefix from GDCM_DIR.
+STRING(REGEX REPLACE "/" ";" GDCM_INSTALL_PACKAGE_DIR_COUNT
+  "${GDCM_INSTALL_PACKAGE_DIR}")
+SET(GDCM_CONFIG_INSTALL_ONLY "
+# Compute the installation prefix from GDCM_DIR.
+SET(GDCM_INSTALL_PREFIX \"${DOLLAR}{GDCM_DIR}\")
+")
+FOREACH(p ${GDCM_INSTALL_PACKAGE_DIR_COUNT})
+  SET(GDCM_CONFIG_INSTALL_ONLY
+    "${GDCM_CONFIG_INSTALL_ONLY}GET_FILENAME_COMPONENT(GDCM_INSTALL_PREFIX \"${DOLLAR}{GDCM_INSTALL_PREFIX}\" PATH)\n"
+    )
+ENDFOREACH(p)
+
+IF(CMAKE_CONFIGURATION_TYPES)
+  # There are multiple build configurations.  Configure one
+  # GDCMConfig.cmake for each configuration.
+  FOREACH(config ${CMAKE_CONFIGURATION_TYPES})
+    SET(GDCM_BUILD_TYPE_CONFIG ${config})
+    CONFIGURE_FILE(
+      ${CMAKE_CURRENT_SOURCE_DIR}/GDCMConfig.cmake.in
+      ${CMAKE_CURRENT_BINARY_DIR}/${config}/GDCMConfig.cmake
+      @ONLY IMMEDIATE)
+  ENDFOREACH(config)
+
+  # Install the config file corresponding to the build configuration
+  # specified when building the install target.  The BUILD_TYPE variable
+  # will be set while CMake is processing the install files.
+  IF(NOT GDCM_INSTALL_NO_DEVELOPMENT)
+    INSTALL_FILES(${GDCM_INSTALL_PACKAGE_DIR} FILES
+      ${CMAKE_CURRENT_BINARY_DIR}/${DOLLAR}{BUILD_TYPE}/GDCMConfig.cmake)
+  ENDIF(NOT GDCM_INSTALL_NO_DEVELOPMENT)
+ELSE(CMAKE_CONFIGURATION_TYPES)
+  # There is only one build configuration. Configure one GDCMConfig.cmake.
+  SET(GDCM_BUILD_TYPE_CONFIG ${CMAKE_BUILD_TYPE})
+  CONFIGURE_FILE(
+    ${CMAKE_CURRENT_SOURCE_DIR}/GDCMConfig.cmake.in
+    ${CMAKE_CURRENT_BINARY_DIR}/GDCMConfig.cmake @ONLY IMMEDIATE)
+
+  # Setup an install rule for the config file.
+  IF(NOT GDCM_INSTALL_NO_DEVELOPMENT)
+    INSTALL_FILES(${GDCM_INSTALL_PACKAGE_DIR} FILES
+      ${CMAKE_CURRENT_BINARY_DIR}/GDCMConfig.cmake)
+  ENDIF(NOT GDCM_INSTALL_NO_DEVELOPMENT)
+ENDIF(CMAKE_CONFIGURATION_TYPES)
+