From 864c005c9bd0b2bfbe4238fa5d8d0eb4c2361d6b Mon Sep 17 00:00:00 2001 From: Jean-Christophe Fillion-Robin Date: Thu, 30 Aug 2018 11:43:52 -0400 Subject: [PATCH] ENH: Configure extension build-tree launcher for starting Slicer This convenience launcher allows to start Slicer ensuring the extensions being developed (and its dependencies) are properly loaded. Co-authored-by: Csaba Pinter --- CMake/SlicerExtensionCPack.cmake | 41 ++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/CMake/SlicerExtensionCPack.cmake b/CMake/SlicerExtensionCPack.cmake index 4d4f5ce64..0e39666b4 100644 --- a/CMake/SlicerExtensionCPack.cmake +++ b/CMake/SlicerExtensionCPack.cmake @@ -252,6 +252,47 @@ install(SCRIPT \"${slicer_extension_cpack_bundle_fixup_directory}/SlicerExtensio endif() endif() +#----------------------------------------------------------------------------- +# Configure launcher for starting Slicer and ensure the extension and its dependencies are loaded +# ------------------------------------------------------------------------- +find_package(CTKAppLauncher REQUIRED) + +# Gather extension build directories +set(extension_build_dirs ${CMAKE_BINARY_DIR}) +if(EXTENSION_DEPENDS) + foreach(dep ${EXTENSION_DEPENDS}) + list(APPEND extension_build_dirs ${${dep}_DIR}) + endforeach() +endif() + +# Create list of additional module paths +set(ADDITIONAL_MODULE_PATHS) +foreach(extension_build_dir IN LISTS extension_build_dirs) + list(APPEND ADDITIONAL_MODULE_PATHS "${extension_build_dir}/${Slicer_QTSCRIPTEDMODULES_LIB_DIR}") + if(CMAKE_CONFIGURATION_TYPES) + foreach(config_type IN LISTS CMAKE_CONFIGURATION_TYPES) + list(APPEND ADDITIONAL_MODULE_PATHS + "${extension_build_dir}/${Slicer_QTLOADABLEMODULES_LIB_DIR}/${config_type}" + "${extension_build_dir}/${Slicer_CLIMODULES_LIB_DIR}/${config_type}" + ) + endforeach() + else() + list(APPEND ADDITIONAL_MODULE_PATHS + "${extension_build_dir}/${Slicer_QTLOADABLEMODULES_LIB_DIR}" + "${extension_build_dir}/${Slicer_CLIMODULES_LIB_DIR}" + ) + endif() +endforeach() +string(REPLACE ";" " " ADDITIONAL_MODULE_PATHS "${ADDITIONAL_MODULE_PATHS}") + +# Configure launcher +ctkAppLauncherConfigureForExecutable( + APPLICATION_NAME SlicerWith${EXTENSION_NAME} + APPLICATION_EXECUTABLE ${Slicer_DIR}/${Slicer_MAIN_PROJECT_APPLICATION_NAME}${CMAKE_EXECUTABLE_SUFFIX} + APPLICATION_DEFAULT_ARGUMENTS "--launcher-additional-settings ${CMAKE_CURRENT_BINARY_DIR}/AdditionalLauncherSettings.ini --additional-module-paths ${ADDITIONAL_MODULE_PATHS}" + DESTINATION_DIR ${CMAKE_CURRENT_BINARY_DIR} +) + #----------------------------------------------------------------------------- include(SlicerExtensionPackageAndUploadTarget) -- GitLab