diff --git a/CMake/AdditionalLibrarySearchPath.cmake.in b/CMake/AdditionalLibrarySearchPath.cmake.in index f803d022fd..995bc1fc26 100644 --- a/CMake/AdditionalLibrarySearchPath.cmake.in +++ b/CMake/AdditionalLibrarySearchPath.cmake.in @@ -1,3 +1,4 @@ SET(@LSP_NAME@_ADDITIONAL_RELEASE_LIBRARY_SEARCH_PATHS @LSP_PATHS@) -SET(@LSP_NAME@_ADDITIONAL_DEBUG_LIBRARY_SEARCH_PATHS @LSP_DEBUGPATHS@) -SET(@LSP_NAME@_ADDITIONAL_RELDEB_LIBRARY_SEARCH_PATHS @LSP_RELDEBPATHS@) +SET(@LSP_NAME@_ADDITIONAL_DEBUG_LIBRARY_SEARCH_PATHS @LSP_DEBUG_PATHS@) +SET(@LSP_NAME@_ADDITIONAL_MINSIZEREL_LIBRARY_SEARCH_PATHS @LSP_MINSIZEREL_PATHS@) +SET(@LSP_NAME@_ADDITIONAL_RELWITHDEBINFO_LIBRARY_SEARCH_PATHS @LSP_RELWITHDEBINFO_PATHS@) diff --git a/CMake/MITK.vcxproj.user.in b/CMake/MITK.vcxproj.user.in index 7d974043e4..68834e306d 100644 --- a/CMake/MITK.vcxproj.user.in +++ b/CMake/MITK.vcxproj.user.in @@ -1,28 +1,28 @@ PATH=@MITK_RUNTIME_PATH_REL@;@CUSTOM_RUNTIME_PATH@;@CMAKE_RUNTIME_OUTPUT_DIRECTORY@\@VS_BUILD_TYPE_REL@;@CMAKE_RUNTIME_OUTPUT_DIRECTORY@\plugins\@VS_BUILD_TYPE_REL@;%PATH% WindowsLocalDebugger - PATH=@MITK_RUNTIME_PATH_RELDEB@;@CUSTOM_RUNTIME_PATH@;@CMAKE_RUNTIME_OUTPUT_DIRECTORY@\@VS_BUILD_TYPE_RELDEB@;@CMAKE_RUNTIME_OUTPUT_DIRECTORY@\plugins\@VS_BUILD_TYPE_RELDEB@;%PATH% + PATH=@MITK_RUNTIME_PATH_RELWITHDEBINFO@;@CUSTOM_RUNTIME_PATH@;@CMAKE_RUNTIME_OUTPUT_DIRECTORY@\@VS_BUILD_TYPE_RELDEB@;@CMAKE_RUNTIME_OUTPUT_DIRECTORY@\plugins\@VS_BUILD_TYPE_RELDEB@;%PATH% WindowsLocalDebugger PATH=@MITK_RUNTIME_PATH_DEB@;@CUSTOM_RUNTIME_PATH@;@CMAKE_RUNTIME_OUTPUT_DIRECTORY@\@VS_BUILD_TYPE_DEB@;@CMAKE_RUNTIME_OUTPUT_DIRECTORY@\plugins\@VS_BUILD_TYPE_DEB@;%PATH% WindowsLocalDebugger PATH=@MITK_RUNTIME_PATH_REL@;@CUSTOM_RUNTIME_PATH@;@CMAKE_RUNTIME_OUTPUT_DIRECTORY@\@VS_BUILD_TYPE_REL@;@CMAKE_RUNTIME_OUTPUT_DIRECTORY@\plugins\@VS_BUILD_TYPE_REL@;%PATH% WindowsLocalDebugger - PATH=@MITK_RUNTIME_PATH_RELDEB@;@CUSTOM_RUNTIME_PATH@;@CMAKE_RUNTIME_OUTPUT_DIRECTORY@\@VS_BUILD_TYPE_RELDEB@;@CMAKE_RUNTIME_OUTPUT_DIRECTORY@\plugins\@VS_BUILD_TYPE_RELDEB@;%PATH% + PATH=@MITK_RUNTIME_PATH_RELWITHDEBINFO@;@CUSTOM_RUNTIME_PATH@;@CMAKE_RUNTIME_OUTPUT_DIRECTORY@\@VS_BUILD_TYPE_RELDEB@;@CMAKE_RUNTIME_OUTPUT_DIRECTORY@\plugins\@VS_BUILD_TYPE_RELDEB@;%PATH% WindowsLocalDebugger PATH=@MITK_RUNTIME_PATH_DEB@;@CUSTOM_RUNTIME_PATH@;@CMAKE_RUNTIME_OUTPUT_DIRECTORY@\@VS_BUILD_TYPE_DEB@;@CMAKE_RUNTIME_OUTPUT_DIRECTORY@\plugins\@VS_BUILD_TYPE_DEB@;%PATH% WindowsLocalDebugger \ No newline at end of file diff --git a/CMake/mitkFunctionAddLibrarySearchPaths.cmake b/CMake/mitkFunctionAddLibrarySearchPaths.cmake index 60e9686ab4..fca9b740a7 100644 --- a/CMake/mitkFunctionAddLibrarySearchPaths.cmake +++ b/CMake/mitkFunctionAddLibrarySearchPaths.cmake @@ -1,44 +1,50 @@ #! Helper function that stores additional library search paths in order to use them #! in the mitkFunctionGetLibrarySearchPaths function. #! #! Calling this function registers an external project with the MITK #! build system. Usage: #! -#! mitkFunctionAddExternalProject(NAME name +#! mitkFunctionAddLibrarySearchPaths(NAME name #! PATHS path1 [path2 ...] -#! [DEBUGPATHS path1 [path2 ...]] -#! [RELDEBPATHS path1 [path2 ...]] +#! [DEBUG_PATHS path1 [path2 ...]] +#! [MINSIZEREL_PATHS path1 [path2 ...]] +#! [RELWITHDEBINFO_PATHS path1 [path2 ...]] #! ) #! #! The function adds the passed paths to a file stored in -#! ${MITK_SUPERBUILD_BINARY_DIR}/CMakeFiles/MITK-AdditionalLibPaths. +#! ${MITK_SUPERBUILD_BINARY_DIR}/MITK-AdditionalLibPaths. #! This information will be later on used by mitkFunctionGetLibrarySearchPaths. #! This allows external projects (also of extensions) to define library search -#! paths that will be used in the superbuild. By using DEBUGPATHS and RELDEBPATHS, -#! you can save special paths for debug or "release with debug info". If special -#! paths are not explicitly specified, PATHS will be used for all configuration. +#! paths that will be used in the superbuild. By using DEBUG_PATHS, MINSIZEREL_PATHS +#! and RELWITHDEBINFO_PATHS, you can save special paths for debug, min size release +#! or "release with debug info". If special paths are not explicitly specified, +#! PATHS will be used for all configuration. #! function(mitkFunctionAddLibrarySearchPaths) - cmake_parse_arguments(LSP "" "NAME" "PATHS;DEBUGPATHS;RELDEBPATHS" ${ARGN}) + cmake_parse_arguments(LSP "" "NAME" "PATHS;DEBUG_PATHS;MINSIZEREL_PATHS;RELWITHDEBINFO_PATHS" ${ARGN}) if(NOT LSP_NAME) message(SEND_ERROR "The NAME argument is missing.") endif() - if(NOT DEFINED LSP_DEBUGPATHS) - set(LSP_DEBUGPATHS ${LSP_PATHS}) - endif(NOT DEFINED LSP_DEBUGPATHS) + if(NOT DEFINED LSP_DEBUG_PATHS) + set(LSP_DEBUG_PATHS ${LSP_PATHS}) + endif() + + if(NOT DEFINED LSP_MINSIZEREL_PATHS) + set(LSP_MINSIZEREL_PATHS ${LSP_PATHS}) + endif() - if(NOT DEFINED LSP_RELDEBPATHS) - set(LSP_RELDEBPATHS ${LSP_PATHS}) - endif(NOT DEFINED LSP_RELDEBPATHS) + if(NOT DEFINED LSP_RELWITHDEBINFO_PATHS) + set(LSP_RELWITHDEBINFO_PATHS ${LSP_PATHS}) + endif() - set(_configured_file ${MITK_SUPERBUILD_BINARY_DIR}/CMakeFiles/MITK-AdditionalLibPaths/${LSP_NAME}.cmake) + set(_configured_file ${MITK_SUPERBUILD_BINARY_DIR}/MITK-AdditionalLibPaths/${LSP_NAME}.cmake) if(${CMAKE_PROJECT_NAME} STREQUAL "MITK-superbuild") - set(_configured_file ${MITK_BINARY_DIR}/CMakeFiles/MITK-AdditionalLibPaths/${LSP_NAME}.cmake) + set(_configured_file ${MITK_BINARY_DIR}/MITK-AdditionalLibPaths/${LSP_NAME}.cmake) endif(${CMAKE_PROJECT_NAME} STREQUAL "MITK-superbuild") configure_file(${MITK_CMAKE_DIR}/AdditionalLibrarySearchPath.cmake.in ${_configured_file} @ONLY) endfunction() diff --git a/CMake/mitkFunctionConfigureVisualStudioUserProjectFile.cmake b/CMake/mitkFunctionConfigureVisualStudioUserProjectFile.cmake index 1f3bbeb2aa..8fc399cff9 100644 --- a/CMake/mitkFunctionConfigureVisualStudioUserProjectFile.cmake +++ b/CMake/mitkFunctionConfigureVisualStudioUserProjectFile.cmake @@ -1,39 +1,39 @@ #! #! Configure user file for visual studio projects #! #! \brief This function will configure a user file for visual studio projects #! #! \param NAME (required) Name of the executable #! #! \code #! mitkFunctionConfigureVisualStudioUserProjectFile( #! NAME MyApp #! ) #! \endcode #! function(mitkFunctionConfigureVisualStudioUserProjectFile) set(_function_params NAME # Name of the executable ) set(_function_multiparams ) set(_function_options ) cmake_parse_arguments(VSUPF "${_function_options}" "${_function_params}" "${_function_multiparams}" ${ARGN}) SET(VS_BUILD_TYPE_DEB debug) SET(VS_BUILD_TYPE_REL release) SET(VS_BUILD_TYPE_RELDEB relwithdebinfo) mitkFunctionGetLibrarySearchPaths(MITK_RUNTIME_PATH_DEB ${VS_BUILD_TYPE_DEB} DEBUG) mitkFunctionGetLibrarySearchPaths(MITK_RUNTIME_PATH_REL ${VS_BUILD_TYPE_REL} RELEASE) - mitkFunctionGetLibrarySearchPaths(MITK_RUNTIME_PATH_RELDEB ${VS_BUILD_TYPE_RELDEB} RELDEB) + mitkFunctionGetLibrarySearchPaths(MITK_RUNTIME_PATH_RELWITHDEBINFO ${VS_BUILD_TYPE_RELDEB} RELWITHDEBINFO) CONFIGURE_FILE("${MITK_SOURCE_DIR}/CMake/MITK.vcxproj.user.in" ${CMAKE_CURRENT_BINARY_DIR}/${VSUPF_NAME}.vcxproj.user @ONLY) endfunction() diff --git a/CMake/mitkFunctionCreateWindowsBatchScript.cmake b/CMake/mitkFunctionCreateWindowsBatchScript.cmake index 9bfd75c85f..0a4755b4d4 100644 --- a/CMake/mitkFunctionCreateWindowsBatchScript.cmake +++ b/CMake/mitkFunctionCreateWindowsBatchScript.cmake @@ -1,13 +1,13 @@ function(mitkFunctionCreateWindowsBatchScript in out build_type) if(${build_type} STREQUAL "debug") mitkFunctionGetLibrarySearchPaths(MITK_RUNTIME_PATH ${build_type} DEBUG) - else(${build_type} STREQUAL "debug") + else() mitkFunctionGetLibrarySearchPaths(MITK_RUNTIME_PATH ${build_type} RELEASE) - endif(${build_type} STREQUAL "debug") + endif() set(VS_BUILD_TYPE ${build_type}) configure_file(${in} ${out} @ONLY) endfunction() \ No newline at end of file diff --git a/CMake/mitkFunctionGetLibrarySearchPaths.cmake b/CMake/mitkFunctionGetLibrarySearchPaths.cmake index 32f3ed2ee6..470f75bf72 100644 --- a/CMake/mitkFunctionGetLibrarySearchPaths.cmake +++ b/CMake/mitkFunctionGetLibrarySearchPaths.cmake @@ -1,195 +1,197 @@ -#! Helper function that get all library search paths. +#! Helper function that gets all library search paths. #! #! Usage: #! -#! mitkFunctionGetLibrarySearchPaths(search_path intermediate_dir [DEBUG|RELDEB]) +#! mitkFunctionGetLibrarySearchPaths(search_path intermediate_dir [DEBUG|MINSIZEREL|RELWITHDEBINFO]) #! #! #! The function creates the variable ${search_path}. The variable intermediate_dir contains #! paths that should be added to the search_path but should not be checked for existance, -#! because the are not yet created. The option DEBUG or RELDEB can be used to indicate that -#! not the paths for release configuration are requested but the debug or "release with debug info" +#! because the are not yet created. The option DEBUG, MINSIZEREL or RELWITHDEBINFO can be used to indicate that +#! not the paths for release configuration are requested but the debug, min size release or "release with debug info" #! paths. #! function(mitkFunctionGetLibrarySearchPaths search_path intermediate_dir) - cmake_parse_arguments(PARSE_ARGV 2 GLS "RELEASE;DEBUG;RELDEB" "" "") + cmake_parse_arguments(PARSE_ARGV 2 GLS "RELEASE;DEBUG;MINSIZEREL;RELWITHDEBINFO" "" "") set(_dir_candidates "${MITK_CMAKE_RUNTIME_OUTPUT_DIRECTORY}" "${MITK_CMAKE_RUNTIME_OUTPUT_DIRECTORY}/plugins" "${MITK_CMAKE_LIBRARY_OUTPUT_DIRECTORY}" "${MITK_CMAKE_LIBRARY_OUTPUT_DIRECTORY}/plugins" ) if(MITK_EXTERNAL_PROJECT_PREFIX) list(APPEND _dir_candidates "${MITK_EXTERNAL_PROJECT_PREFIX}/bin" "${MITK_EXTERNAL_PROJECT_PREFIX}/lib" ) endif() # Determine the Qt5 library installation prefix set(_qmake_location ) if(MITK_USE_Qt5 AND TARGET ${Qt5Core_QMAKE_EXECUTABLE}) get_property(_qmake_location TARGET ${Qt5Core_QMAKE_EXECUTABLE} PROPERTY IMPORT_LOCATION) endif() if(_qmake_location) if(NOT _qt_install_libs) if(WIN32) execute_process(COMMAND ${_qmake_location} -query QT_INSTALL_BINS OUTPUT_VARIABLE _qt_install_libs OUTPUT_STRIP_TRAILING_WHITESPACE) else() execute_process(COMMAND ${_qmake_location} -query QT_INSTALL_LIBS OUTPUT_VARIABLE _qt_install_libs OUTPUT_STRIP_TRAILING_WHITESPACE) endif() file(TO_CMAKE_PATH "${_qt_install_libs}" _qt_install_libs) set(_qt_install_libs ${_qt_install_libs} CACHE INTERNAL "Qt library installation prefix" FORCE) endif() if(_qt_install_libs) list(APPEND _dir_candidates ${_qt_install_libs}) endif() elseif(MITK_USE_Qt5) message(WARNING "The qmake executable could not be found.") endif() get_property(_additional_paths GLOBAL PROPERTY MITK_ADDITIONAL_LIBRARY_SEARCH_PATHS) if(MITK_USE_HDF5) FIND_PACKAGE(HDF5 COMPONENTS C HL NO_MODULE REQUIRED shared) get_target_property(_location hdf5-shared LOCATION) get_filename_component(_location ${_location} PATH) list(APPEND _additional_paths ${_location}) # This is a work-around. The hdf5-config.cmake file is not robust enough # to be included several times via find_pakcage calls. set(HDF5_LIBRARIES ${HDF5_LIBRARIES} PARENT_SCOPE) endif() if(MITK_USE_Vigra) # we cannot use _find_package(Vigra) here because the vigra-config.cmake file # always includes the target-exports files without using an include guard. This # would lead to errors when another find_package(Vigra) call is processed. The # (bad) assumption here is that for the time being, only the Classification module # is using Vigra. if(UNIX) list(APPEND _additional_paths ${Vigra_DIR}/lib) else() list(APPEND _additional_paths ${Vigra_DIR}/bin) endif() endif() if(_additional_paths) list(APPEND _dir_candidates ${_additional_paths}) endif() # The code below is sub-optimal. It makes assumptions about # the structure of the build directories, pointed to by # the *_DIR variables. Instead, we should rely on package # specific "LIBRARY_DIRS" variables, if they exist. if(WIN32) list(APPEND _dir_candidates "${ITK_DIR}/bin") endif() if(MITK_USE_MatchPoint) if(WIN32) list(APPEND _dir_candidates "${MatchPoint_DIR}/bin") else() list(APPEND _dir_candidates "${MatchPoint_DIR}/lib") endif() endif() # If OpenCV is built within the MITK superbuild set the binary directory # according to the lib path provided by OpenCV. # In the case where an external OpenCV is provided use the binary directory # of this OpenCV directory if(MITK_USE_OpenCV) if(WIN32) if (EXISTS ${OpenCV_LIB_PATH}) list(APPEND _dir_candidates "${OpenCV_LIB_PATH}/../bin") # OpenCV is built in superbuild else() list(APPEND _dir_candidates "${OpenCV_DIR}/bin") # External OpenCV build is used endif() endif() endif() if(MITK_USE_Python) list(APPEND _dir_candidates "${CTK_DIR}/CMakeExternals/Install/bin") get_filename_component(_python_dir ${PYTHON_EXECUTABLE} DIRECTORY) list(APPEND _dir_candidates "${_python_dir}") endif() if(MITK_USE_TOF_PMDO3 OR MITK_USE_TOF_PMDCAMCUBE OR MITK_USE_TOF_PMDCAMBOARD) list(APPEND _dir_candidates "${MITK_PMD_SDK_DIR}/plugins" "${MITK_PMD_SDK_DIR}/bin") endif() if(MITK_USE_CTK) list(APPEND _dir_candidates "${CTK_LIBRARY_DIRS}") foreach(_ctk_library ${CTK_LIBRARIES}) if(${_ctk_library}_LIBRARY_DIRS) list(APPEND _dir_candidates "${${_ctk_library}_LIBRARY_DIRS}") endif() endforeach() endif() if(MITK_USE_BLUEBERRY) if(DEFINED CTK_PLUGIN_RUNTIME_OUTPUT_DIRECTORY) if(IS_ABSOLUTE "${CTK_PLUGIN_RUNTIME_OUTPUT_DIRECTORY}") list(APPEND _dir_candidates "${CTK_PLUGIN_RUNTIME_OUTPUT_DIRECTORY}") else() list(APPEND _dir_candidates "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${CTK_PLUGIN_RUNTIME_OUTPUT_DIRECTORY}") endif() endif() endif() if(MITK_LIBRARY_DIRS) list(APPEND _dir_candidates ${MITK_LIBRARY_DIRS}) endif() ################################################################### #get the search paths added by the mitkFunctionAddLibrarySearchPath - file(GLOB _additional_path_info_files "${MITK_SUPERBUILD_BINARY_DIR}/CMakeFiles/MITK-AdditionalLibPaths/*.cmake") + file(GLOB _additional_path_info_files "${MITK_SUPERBUILD_BINARY_DIR}/MITK-AdditionalLibPaths/*.cmake") foreach(_additional_path_info_file ${_additional_path_info_files}) get_filename_component(_additional_info_name ${_additional_path_info_file} NAME_WE) include(${_additional_path_info_file}) if(GLS_DEBUG) list(APPEND _dir_candidates ${${_additional_info_name}_ADDITIONAL_DEBUG_LIBRARY_SEARCH_PATHS}) - elseif(GLS_RELDEB) - list(APPEND _dir_candidates ${${_additional_info_name}_ADDITIONAL_RELDEB_LIBRARY_SEARCH_PATHS}) - else() + elseif(GLS_MINSIZEREL) + list(APPEND _dir_candidates ${${_additional_info_name}_ADDITIONAL_MINSIZEREL_LIBRARY_SEARCH_PATHS}) + elseif(GLS_RELWITHDEBINFO) + list(APPEND _dir_candidates ${${_additional_info_name}_ADDITIONAL_RELWITHDEBINFO_LIBRARY_SEARCH_PATHS}) + else() #Release list(APPEND _dir_candidates ${${_additional_info_name}_ADDITIONAL_RELEASE_LIBRARY_SEARCH_PATHS}) endif() endforeach(_additional_path_info_file ${_additional_path_info_files}) ############################################### #sanitize all candidates and compile final list list(REMOVE_DUPLICATES _dir_candidates) set(_search_dirs ) foreach(_dir ${_dir_candidates}) if(EXISTS "${_dir}/${intermediate_dir}") list(APPEND _search_dirs "${_dir}/${intermediate_dir}") else() list(APPEND _search_dirs "${_dir}") endif() endforeach() # Special handling for "internal" search dirs. The intermediate directory # might not have been created yet, so we can't check for its existence. # Hence we just add it for Windows without checking. set(_internal_search_dirs "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}" "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/plugins") if(WIN32) foreach(_dir ${_internal_search_dirs}) set(_search_dirs "${_dir}/${intermediate_dir}" ${_search_dirs}) endforeach() else() set(_search_dirs ${_internal_search_dirs} ${_search_dirs}) endif() list(REMOVE_DUPLICATES _search_dirs) set(${search_path} ${_search_dirs} PARENT_SCOPE) endfunction()