X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=CMake%2FCMakeLists.txt;h=8d9f71200189dd5922bd57b2998528df1820648e;hb=f1d5aef5e0eaa2ef4aacd0354915ffe371fc9866;hp=e0970553cf28a98f956aa343b90d9e5033ac3012;hpb=2429043f14c6a6f529f59c61cdf7193bc3c13b8c;p=gdcm.git diff --git a/CMake/CMakeLists.txt b/CMake/CMakeLists.txt index e0970553..8d9f7120 100644 --- a/CMake/CMakeLists.txt +++ b/CMake/CMakeLists.txt @@ -1,27 +1,254 @@ -#----------------------------------------------------------------------------- -# 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 - ) +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. +# to be used against non installed library 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) + +SET(GDCM_LIBRARY_DIRS_CONFIG ${GDCM_LIBRARY_DIRS}) + +# The runtime directories. +SET(GDCM_RUNTIME_DIRS_CONFIG ${GDCM_RUNTIME_DIRS}) + +# The include directories. +# to be used against non installed library +SET(GDCM_INCLUDE_PATH + ${GDCM_SOURCE_DIR}/src + ${GDCM_SOURCE_DIR}/vtk + ${GDCM_BINARY_DIR}) + +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.5/") +# 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) +