diff --git a/CMake/mitkFunctionInstallAutoLoadModules.cmake b/CMake/mitkFunctionInstallAutoLoadModules.cmake
index 252872484e..e9a97199cf 100644
--- a/CMake/mitkFunctionInstallAutoLoadModules.cmake
+++ b/CMake/mitkFunctionInstallAutoLoadModules.cmake
@@ -1,107 +1,121 @@
#! \brief Install auto-load modules needed by plug-ins.
#!
#! Uses the MITK_AUTOLOAD_TARGETS target property of the plug-in
#! targets to extract a list of auto-load target names which will
#! be installed in the given DESTINATION
with an appropriate
#! sub-directory appended. If an entry in TARGETS
#! is not a known target, a warning will be issued. This macro
#! can also work on imported plug-in targets.
#!
#! \note This macro is usually not called directly. It is indirectly
#! called by a call to FunctionCreateBlueBerryApplication().
#!
#! \param PLUGINS A list of plug-in targets from which installable audo-load modules are derived.
#! \param DESTINATION The install destination, e.g. "bin".
+#! \param RETURN_ADDITIONAL_PLUGINS Return variable name: will be filled with the list of the found auto-load modules (e.g. for feeding into MITK_INSTALL_TARGETS(PLUGINS ..)
function(mitkFunctionInstallAutoLoadModules)
- MACRO_PARSE_ARGUMENTS(_INSTALL "PLUGINS;DESTINATION" "" ${ARGN})
+ MACRO_PARSE_ARGUMENTS(_INSTALL "PLUGINS;DESTINATION;RETURN_ADDITIONAL_PLUGINS" "" ${ARGN})
if(NOT _INSTALL_PLUGINS)
message(SEND_ERROR "PLUGINS argument is required")
endif()
if(NOT _INSTALL_DESTINATION)
message(SEND_ERROR "DESTINATION argument is required")
endif()
foreach(_install_plugin ${_INSTALL_PLUGINS})
if(TARGET ${_install_plugin})
get_target_property(_autoload_targets ${_install_plugin} MITK_AUTOLOAD_TARGETS)
if (_autoload_targets)
foreach(_autoload_target ${_autoload_targets})
get_target_property(_autoload_subdir ${_autoload_target} MITK_AUTOLOAD_DIRECTORY)
if(NOT _autoload_subdir)
message(WARNING "Target ${_autoload_target} does not seem to be an auto-load module. Skipping installation.")
else(NOT _${_autoload_target}_installed)
set(_module_install_dir ${_INSTALL_DESTINATION}/${_autoload_subdir})
get_target_property(_is_imported ${_autoload_target} IMPORTED)
if(_is_imported)
get_target_property(_target_loc_debug ${_autoload_target} IMPORTED_LOCATION_DEBUG)
get_target_property(_target_loc_release ${_autoload_target} IMPORTED_LOCATION_RELEASE)
else()
# Since we need to use install(FILE ...) we need to get the absolute path to the
# module. This is a bit tricky and we only support Debug and Release configurations
# on multi-configuration build systems.
if(WIN32)
get_target_property(_target_loc_debug ${_autoload_target} RUNTIME_OUTPUT_DIRECTORY)
else()
get_target_property(_target_loc_debug ${_autoload_target} LIBRARY_OUTPUT_DIRECTORY)
endif()
set(_target_loc_release ${_target_loc_debug})
if(NOT CMAKE_CFG_INTDIR STREQUAL ".")
set(_target_loc_debug "${_target_loc_debug}/Debug")
set(_target_loc_release "${_target_loc_release}/Release")
endif()
set(_target_loc_debug ${_target_loc_debug}/${CMAKE_SHARED_LIBRARY_PREFIX}${_autoload_target}${CMAKE_SHARED_LIBRARY_SUFFIX})
set(_target_loc_release ${_target_loc_release}/${CMAKE_SHARED_LIBRARY_PREFIX}${_autoload_target}${CMAKE_SHARED_LIBRARY_SUFFIX})
endif()
get_filename_component(_target_filename_debug "${_target_loc_debug}" NAME)
get_filename_component(_target_filename_release "${_target_loc_release}" NAME)
install(FILES ${_target_loc_debug}
DESTINATION ${_module_install_dir}
CONFIGURATIONS Debug)
install(FILES ${_target_loc_release}
DESTINATION ${_module_install_dir}
CONFIGURATIONS Release)
set(_${_autoload_target}_installed 1)
if(UNIX AND NOT APPLE)
if(_target_filename_debug)
install(CODE "file(RPATH_REMOVE
FILE \"\${CMAKE_INSTALL_PREFIX}/${_module_install_dir}/${_target_filename_debug}\")")
endif()
if(_target_filename_release)
install(CODE "file(RPATH_REMOVE
FILE \"\${CMAKE_INSTALL_PREFIX}/${_module_install_dir}/${_target_filename_release}\")")
endif()
endif()
endif()
+
+
+ if(_target_filename_debug)
+ list(APPEND additional_absolute_plugins_for_dependey_check ${CMAKE_INSTALL_PREFIX}/${_module_install_dir}/${_target_filename_debug})
+ endif()
+ if(_target_filename_release)
+ list(APPEND additional_absolute_plugins_for_dependey_check ${CMAKE_INSTALL_PREFIX}/${_module_install_dir}/${_target_filename_release})
+ endif()
+
endforeach()
endif()
else()
message(WARNING "Ignoring unknown target \"${_install_target}\" for installation.")
endif()
endforeach()
+ # return a list of additional targets that should be checked for dependencies
+ list(REMOVE_DUPLICATES additional_absolute_plugins_for_dependey_check)
+ set(${_INSTALL_RETURN_ADDITIONAL_PLUGINS} ${additional_absolute_plugins_for_dependey_check} PARENT_SCOPE)
+
endfunction()
function(BlueBerryApplicationInstallHook)
MACRO_PARSE_ARGUMENTS(_INSTALL "APP_NAME;PLUGINS" "" ${ARGN})
set(_destination bin)
if(APPLE)
set(_destination ${_INSTALL_APP_NAME}.app/Contents/MacOS)
endif()
mitkFunctionInstallAutoLoadModules(
PLUGINS ${_INSTALL_PLUGINS}
DESTINATION ${_destination}
)
endfunction()