]> Creatis software - gdcm.git/commitdiff
ENH: Adding ExportConfiguration
authormalaterre <malaterre>
Thu, 20 Jul 2006 21:59:01 +0000 (21:59 +0000)
committermalaterre <malaterre>
Thu, 20 Jul 2006 21:59:01 +0000 (21:59 +0000)
CMake/ExportConfiguration/CMakeLists.txt [new file with mode: 0644]
CMake/ExportConfiguration/GDCMConfig.cmake.in [new file with mode: 0644]
CMake/ExportConfiguration/UseGDCM.cmake [new file with mode: 0644]

diff --git a/CMake/ExportConfiguration/CMakeLists.txt b/CMake/ExportConfiguration/CMakeLists.txt
new file mode 100644 (file)
index 0000000..bb4b0dc
--- /dev/null
@@ -0,0 +1,179 @@
+# 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 "$")
+
+#-----------------------------------------------------------------------------
+# Settings shared between the build tree and install tree.
+
+EXPORT_LIBRARY_DEPENDENCIES(
+  ${GDCM_BINARY_DIR}/GDCMLibraryDepends.cmake)
+INCLUDE(${CMAKE_ROOT}/Modules/CMakeExportBuildSettings.cmake)
+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 CMake macros dir.
+SET(GDCM_CMAKE_DIR_CONFIG 
+  ${GDCM_CMAKE_DIR})
+
+# 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 CMake macros dir.
+SET(GDCM_CMAKE_DIR_CONFIG 
+  ${DOLLAR}{GDCM_INSTALL_PREFIX}${GDCM_INSTALL_PACKAGE_DIR}/CMake)
+
+# 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(GDCM_VTK)
+  IF(VTK_BINARY_DIR)
+    IF(NOT GDCM_VTK_INSTALL_PACKAGE_DIR)
+      MESSAGE(
+        "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)
+ENDIF(GDCM_VTK)
+
+# 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)
diff --git a/CMake/ExportConfiguration/GDCMConfig.cmake.in b/CMake/ExportConfiguration/GDCMConfig.cmake.in
new file mode 100644 (file)
index 0000000..28d0975
--- /dev/null
@@ -0,0 +1,78 @@
+#-----------------------------------------------------------------------------
+#
+# GDCMConfig.cmake - CMake configuration file for external projects.
+#
+# This file is configured by GDCM and used by the UseGDCM.cmake
+# module to load GDCM's settings for an external project.
+@GDCM_CONFIG_INSTALL_ONLY@
+# The GDCM version number.
+SET(GDCM_MAJOR_VERSION "@GDCM_MAJOR_VERSION@")
+SET(GDCM_MINOR_VERSION "@GDCM_MINOR_VERSION@")
+
+# The libraries.
+SET(GDCM_LIBRARIES "@GDCM_LIBRARIES@")
+
+# The CMake macros dir.
+SET(GDCM_CMAKE_DIR "@GDCM_CMAKE_DIR_CONFIG@")
+
+# The configuration options.
+SET(GDCM_BUILD_SHARED_LIBS "@GDCM_BUILD_SHARED_LIBS@")
+SET(GDCM_VTK "@GDCM_VTK@")
+
+# The C and C++ flags added to the cmake-configured flags.
+SET(GDCM_REQUIRED_C_FLAGS
+  "@GDCM_REQUIRED_C_FLAGS@")
+SET(GDCM_REQUIRED_CXX_FLAGS
+  "@GDCM_REQUIRED_CXX_FLAGS@")
+SET(GDCM_REQUIRED_EXE_LINKER_FLAGS
+  "@GDCM_REQUIRED_EXE_LINKER_FLAGS@")
+SET(GDCM_REQUIRED_SHARED_LINKER_FLAGS
+  "@GDCM_REQUIRED_SHARED_LINKER_FLAGS@")
+SET(GDCM_REQUIRED_MODULE_LINKER_FLAGS
+  "@GDCM_REQUIRED_MODULE_LINKER_FLAGS@")
+
+# The "use" file.
+SET(GDCM_USE_FILE "@GDCM_USE_FILE_CONFIG@")
+
+# The build settings file.
+SET(GDCM_BUILD_SETTINGS_FILE "@GDCM_BUILD_SETTINGS_FILE_CONFIG@")
+
+# The library directories.
+SET(GDCM_LIBRARY_DIRS "@GDCM_LIBRARY_DIRS_CONFIG@")
+
+# The runtime directories.
+# Note that if GDCM_CONFIGURATION_TYPES is set (see below) then
+# these directories will be the parent directories under which there will
+# be a directory of runtime binaries for each configuration type.
+SET(GDCM_RUNTIME_DIRS "@GDCM_RUNTIME_DIRS_CONFIG@")
+
+# The include directories.
+SET(GDCM_INCLUDE_DIRS "@GDCM_INCLUDE_DIRS_CONFIG@")
+
+# The library dependencies file.
+IF(NOT GDCM_NO_LIBRARY_DEPENDS AND 
+    EXISTS "@GDCM_LIBRARY_DEPENDS_FILE@")
+  INCLUDE("@GDCM_LIBRARY_DEPENDS_FILE@")
+ENDIF(NOT GDCM_NO_LIBRARY_DEPENDS AND 
+  EXISTS "@GDCM_LIBRARY_DEPENDS_FILE@")
+
+# The VTK options.
+IF(GDCM_VTK)
+  SET(GDCM_VTK_DIR "@GDCM_VTK_DIR_CONFIG@")
+ENDIF(GDCM_VTK)
+
+# An install tree always provides one build configuration.
+# A build tree may provide either one or multiple build
+# configurations depending on the CMake generator used. Since
+# this project can be used either from a build tree or an install tree it
+# is useful for outside projects to know the configurations available.
+# If this GDCMConfig.cmake is in an install tree
+# GDCM_CONFIGURATION_TYPES will be empty and GDCM_BUILD_TYPE
+# will be set to the value of CMAKE_BUILD_TYPE used to build
+# GDCM. If GDCMConfig.cmake is in a build tree
+# then GDCM_CONFIGURATION_TYPES and GDCM_BUILD_TYPE will
+# have values matching CMAKE_CONFIGURATION_TYPES and CMAKE_BUILD_TYPE
+# for that build tree (only one will ever be set).
+SET(GDCM_CONFIGURATION_TYPES @GDCM_CONFIGURATION_TYPES_CONFIG@)
+SET(GDCM_BUILD_TYPE @GDCM_BUILD_TYPE_CONFIG@)
+
diff --git a/CMake/ExportConfiguration/UseGDCM.cmake b/CMake/ExportConfiguration/UseGDCM.cmake
new file mode 100644 (file)
index 0000000..e88e987
--- /dev/null
@@ -0,0 +1,49 @@
+#
+# This module is provided as GDCM_USE_FILE by GDCMConfig.cmake.
+# It can be INCLUDEd in a project to load the needed compiler and linker
+# settings to use GDCM:
+#   FIND_PACKAGE(GDCM REQUIRED)
+#   INCLUDE(${GDCM_USE_FILE})
+
+IF(NOT GDCM_USE_FILE_INCLUDED)
+  SET(GDCM_USE_FILE_INCLUDED 1)
+
+  # Load the compiler settings used for GDCM.
+  IF(GDCM_BUILD_SETTINGS_FILE)
+    INCLUDE(${CMAKE_ROOT}/Modules/CMakeImportBuildSettings.cmake)
+    CMAKE_IMPORT_BUILD_SETTINGS(${GDCM_BUILD_SETTINGS_FILE})
+  ENDIF(GDCM_BUILD_SETTINGS_FILE)
+
+  # Add compiler flags needed to use GDCM.
+  SET(CMAKE_C_FLAGS
+    "${CMAKE_C_FLAGS} ${GDCM_REQUIRED_C_FLAGS}")
+  SET(CMAKE_CXX_FLAGS
+    "${CMAKE_CXX_FLAGS} ${GDCM_REQUIRED_CXX_FLAGS}")
+  SET(CMAKE_EXE_LINKER_FLAGS
+    "${CMAKE_EXE_LINKER_FLAGS} ${GDCM_REQUIRED_EXE_LINKER_FLAGS}")
+  SET(CMAKE_SHARED_LINKER_FLAGS
+    "${CMAKE_SHARED_LINKER_FLAGS} ${GDCM_REQUIRED_SHARED_LINKER_FLAGS}")
+  SET(CMAKE_MODULE_LINKER_FLAGS
+    "${CMAKE_MODULE_LINKER_FLAGS} ${GDCM_REQUIRED_MODULE_LINKER_FLAGS}")
+
+  # Add include directories needed to use GDCM.
+  INCLUDE_DIRECTORIES(${GDCM_INCLUDE_DIRS})
+
+  # Add link directories needed to use GDCM.
+  LINK_DIRECTORIES(${GDCM_LIBRARY_DIRS})
+
+  # Add cmake module path.
+  SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${GDCM_CMAKE_DIR}")
+
+  # Use VTK.
+  IF(GDCM_VTK)
+    SET(VTK_DIR ${GDCM_VTK_DIR})
+    FIND_PACKAGE(VTK)
+    IF(VTK_FOUND)
+      INCLUDE(${VTK_USE_FILE})
+    ELSE(VTK_FOUND)
+      MESSAGE("VTK not found in GDCM_VTK_DIR=\"${GDCM_VTK_DIR}\".")
+    ENDIF(VTK_FOUND)
+  ENDIF(GDCM_VTK)
+
+ENDIF(NOT GDCM_USE_FILE_INCLUDED)