From 0887d40e2fa17d61879dc9d073b24a90e6479e4e Mon Sep 17 00:00:00 2001 From: Guillaume Pasero <guillaume.pasero@c-s.fr> Date: Mon, 9 Mar 2015 18:37:35 +0100 Subject: [PATCH] ENH: add otbcli and otbgui, use the same scripts for build and install --- CMake/OTBApplicationMacros.cmake | 14 ++++---- CMake/otbcli.bat.buildtree.in | 23 ------------ ...tbcli.bat.installtree.in => otbcli.bat.in} | 0 CMake/otbcli.sh.buildtree.in | 29 --------------- ...{otbcli.sh.installtree.in => otbcli.sh.in} | 0 CMake/otbgui.bat.buildtree.in | 25 ------------- ...tbgui.bat.installtree.in => otbgui.bat.in} | 0 CMake/otbgui.sh.buildtree.in | 32 ----------------- ...{otbgui.sh.installtree.in => otbgui.sh.in} | 0 .../Wrappers/CommandLine/src/CMakeLists.txt | 35 ++++++++++++++++++ Modules/Wrappers/QtWidget/src/CMakeLists.txt | 36 +++++++++++++++++++ 11 files changed, 78 insertions(+), 116 deletions(-) delete mode 100644 CMake/otbcli.bat.buildtree.in rename CMake/{otbcli.bat.installtree.in => otbcli.bat.in} (100%) delete mode 100644 CMake/otbcli.sh.buildtree.in rename CMake/{otbcli.sh.installtree.in => otbcli.sh.in} (100%) delete mode 100644 CMake/otbgui.bat.buildtree.in rename CMake/{otbgui.bat.installtree.in => otbgui.bat.in} (100%) delete mode 100644 CMake/otbgui.sh.buildtree.in rename CMake/{otbgui.sh.installtree.in => otbgui.sh.in} (100%) diff --git a/CMake/OTBApplicationMacros.cmake b/CMake/OTBApplicationMacros.cmake index 9b8922c7bc..ce2141ce0a 100644 --- a/CMake/OTBApplicationMacros.cmake +++ b/CMake/OTBApplicationMacros.cmake @@ -13,7 +13,7 @@ macro(otb_create_application) # Do not output in the standard lib folder where all shared libs goes. # This is to avoid the application factory to look into each and every shared lib # for itkLoad symbol - set_property(TARGET ${APPLICATION_TARGET_NAME} PROPERTY LIBRARY_OUTPUT_DIRECTORY ${OTB_BINARY_DIR}/lib/otb/applications) + set_property(TARGET ${APPLICATION_TARGET_NAME} PROPERTY LIBRARY_OUTPUT_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/otb/applications) # Remove the usual 'lib' prefix to make it clear it is a plugin # and not a shared library to link against @@ -50,11 +50,11 @@ macro(otb_create_application) if (WIN32) set(SCRIPT_CLI_SOURCE ${OTB_SOURCE_DIR}/CMake/otbcli_app.bat.in) set(SCRIPT_CLI_INTERMEDIATE ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/otbcli_${APPLICATION_NAME}.bat) - set(SCRIPT_CLI_INSTALLABLE ${APPLICATION_BINARY_PATH}/otbcli_${APPLICATION_NAME}.bat) + set(SCRIPT_CLI_INSTALLABLE ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/otbcli_${APPLICATION_NAME}.bat) else() set(SCRIPT_CLI_SOURCE ${OTB_SOURCE_DIR}/CMake/otbcli_app.sh.in) set(SCRIPT_CLI_INTERMEDIATE ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/otbcli_${APPLICATION_NAME}) - set(SCRIPT_CLI_INSTALLABLE ${APPLICATION_BINARY_PATH}/otbcli_${APPLICATION_NAME}) + set(SCRIPT_CLI_INSTALLABLE ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/otbcli_${APPLICATION_NAME}) endif() if (EXISTS ${SCRIPT_CLI_SOURCE}) @@ -65,7 +65,7 @@ macro(otb_create_application) # Copy it next to the application shared lib, and give executable rights file(COPY ${SCRIPT_CLI_INTERMEDIATE} - DESTINATION ${APPLICATION_BINARY_PATH} + DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY} FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) # Install a version of this script if we are inside the OTB build @@ -77,11 +77,11 @@ macro(otb_create_application) if (WIN32) set(SCRIPT_GUI_SOURCE ${OTB_SOURCE_DIR}/CMake/otbgui_app.bat.in) set(SCRIPT_GUI_INTERMEDIATE ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/otbgui_${APPLICATION_NAME}.bat) - set(SCRIPT_GUI_INSTALLABLE ${APPLICATION_BINARY_PATH}/otbgui_${APPLICATION_NAME}.bat) + set(SCRIPT_GUI_INSTALLABLE ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/otbgui_${APPLICATION_NAME}.bat) else() set(SCRIPT_GUI_SOURCE ${OTB_SOURCE_DIR}/CMake/otbgui_app.sh.in) set(SCRIPT_GUI_INTERMEDIATE ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/otbgui_${APPLICATION_NAME}) - set(SCRIPT_GUI_INSTALLABLE ${APPLICATION_BINARY_PATH}/otbgui_${APPLICATION_NAME}) + set(SCRIPT_GUI_INSTALLABLE ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/otbgui_${APPLICATION_NAME}) endif() if (EXISTS ${SCRIPT_GUI_SOURCE}) @@ -92,7 +92,7 @@ macro(otb_create_application) # Copy it next to the application shared lib, and give executable rights file(COPY ${SCRIPT_GUI_INTERMEDIATE} - DESTINATION ${APPLICATION_BINARY_PATH} + DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY} FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) # Install a version of this script if we are inside the OTB build diff --git a/CMake/otbcli.bat.buildtree.in b/CMake/otbcli.bat.buildtree.in deleted file mode 100644 index a5745e171f..0000000000 --- a/CMake/otbcli.bat.buildtree.in +++ /dev/null @@ -1,23 +0,0 @@ -@echo off -:: -:: Autogenerated by OTB installation process -:: DO NOT MODIFY -:: - -set CURRENT_SCRIPT_DIR=%~dp0 - -if exist %CURRENT_SCRIPT_DIR%otbApplicationLauncherCommandLine.exe ( - :: Prefer using the launcher inside the script dir - set OTB_CLI_LAUNCHER=%CURRENT_SCRIPT_DIR%otbApplicationLauncherCommandLine.exe -) else ( - :: Use the one from the PATH - set OTB_CLI_LAUNCHER=otbApplicationLauncherCommandLine.exe -) - -:: works for build dir -if exist @APPLICATION_BINARY_PATH@ ( - set ITK_AUTOLOAD_PATH=@APPLICATION_BINARY_PATH@;%ITK_AUTOLOAD_PATH% -) - -:: start the application -%OTB_CLI_LAUNCHER% %* diff --git a/CMake/otbcli.bat.installtree.in b/CMake/otbcli.bat.in similarity index 100% rename from CMake/otbcli.bat.installtree.in rename to CMake/otbcli.bat.in diff --git a/CMake/otbcli.sh.buildtree.in b/CMake/otbcli.sh.buildtree.in deleted file mode 100644 index 847b707512..0000000000 --- a/CMake/otbcli.sh.buildtree.in +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/bash - -# -# Autogenerated by OTB installation process -# DO NOT MODIFY -# - -CURRENT_SCRIPT_DIR=`dirname $0` - -if [ -e $CURRENT_SCRIPT_DIR/otbApplicationLauncherCommandLine ] -then - # Prefer using the launcher inside the script dir - OTB_CLI_LAUNCHER=$CURRENT_SCRIPT_DIR/otbApplicationLauncherCommandLine -else - # Use the one from the PATH - OTB_CLI_LAUNCHER=otbApplicationLauncherCommandLine -fi - -# works for build dir -if [ -d @APPLICATION_BINARY_PATH@ ] -then - ITK_AUTOLOAD_PATH=@APPLICATION_BINARY_PATH@:$ITK_AUTOLOAD_PATH -fi - -# export it to make it available to otbApplicationLauncherCommandLine environment -export ITK_AUTOLOAD_PATH - -# start the application -$OTB_CLI_LAUNCHER "$@" diff --git a/CMake/otbcli.sh.installtree.in b/CMake/otbcli.sh.in similarity index 100% rename from CMake/otbcli.sh.installtree.in rename to CMake/otbcli.sh.in diff --git a/CMake/otbgui.bat.buildtree.in b/CMake/otbgui.bat.buildtree.in deleted file mode 100644 index 351c156455..0000000000 --- a/CMake/otbgui.bat.buildtree.in +++ /dev/null @@ -1,25 +0,0 @@ -@echo off -:: -:: Autogenerated by OTB installation process -:: DO NOT MODIFY -:: - -set CURRENT_SCRIPT_DIR=%~dp0 - -if exist %CURRENT_SCRIPT_DIR%otbApplicationLauncherQt.exe ( - :: Prefer using the launcher inside the script dir - set OTB_GUI_LAUNCHER=%CURRENT_SCRIPT_DIR%otbApplicationLauncherQt.exe -) else ( - :: Use the one from the PATH - set OTB_GUI_LAUNCHER=otbApplicationLauncherQt.exe -) - -:: works for build dir -if exist @APPLICATION_BINARY_PATH@ ( - set ITK_AUTOLOAD_PATH=@APPLICATION_BINARY_PATH@;%ITK_AUTOLOAD_PATH% -) - -set LC_NUMERIC=C - -:: start the application -%OTB_GUI_LAUNCHER% %* diff --git a/CMake/otbgui.bat.installtree.in b/CMake/otbgui.bat.in similarity index 100% rename from CMake/otbgui.bat.installtree.in rename to CMake/otbgui.bat.in diff --git a/CMake/otbgui.sh.buildtree.in b/CMake/otbgui.sh.buildtree.in deleted file mode 100644 index 62233dda32..0000000000 --- a/CMake/otbgui.sh.buildtree.in +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/bash - -# -# Autogenerated by OTB installation process -# DO NOT MODIFY -# - -CURRENT_SCRIPT_DIR=`dirname $0` - -if [ -e $CURRENT_SCRIPT_DIR/otbApplicationLauncherQt ] -then - # Prefer using the launcher inside the script dir - OTB_GUI_LAUNCHER=$CURRENT_SCRIPT_DIR/otbApplicationLauncherQt -else - # Use the one from the PATH - OTB_GUI_LAUNCHER=otbApplicationLauncherQt -fi - -# use the buildtree path to applications -if [ -d @APPLICATION_BINARY_PATH@ ] -then - ITK_AUTOLOAD_PATH=@APPLICATION_BINARY_PATH@:$ITK_AUTOLOAD_PATH -fi - -# export it to make it available to otbApplicationLauncherCommandLine environment -export ITK_AUTOLOAD_PATH - -# avoid numerical issues caused by locale -export LC_NUMERIC=C - -# start the application -$OTB_GUI_LAUNCHER "$@" diff --git a/CMake/otbgui.sh.installtree.in b/CMake/otbgui.sh.in similarity index 100% rename from CMake/otbgui.sh.installtree.in rename to CMake/otbgui.sh.in diff --git a/Modules/Wrappers/CommandLine/src/CMakeLists.txt b/Modules/Wrappers/CommandLine/src/CMakeLists.txt index 4aaf60c8fc..f47770dded 100644 --- a/Modules/Wrappers/CommandLine/src/CMakeLists.txt +++ b/Modules/Wrappers/CommandLine/src/CMakeLists.txt @@ -14,3 +14,38 @@ otb_module_target(OTBCommandLine) add_executable(otbApplicationLauncherCommandLine otbApplicationLauncherCommandLine.cxx) target_link_libraries(otbApplicationLauncherCommandLine OTBCommandLine) otb_module_target(otbApplicationLauncherCommandLine) + +# Where we will install the script in the build tree +get_target_property(CLI_OUPUT_DIR otbApplicationLauncherCommandLine RUNTIME_OUTPUT_DIRECTORY) + +# Generate a script in the build dir, next to the cli launcher +# Need a two-step process since configure_file don't support permissions +file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/Scripts) + +if (WIN32) +configure_file( ${CMAKE_SOURCE_DIR}/CMake/otbcli.bat.in + ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/Scripts/otbcli.bat + @ONLY ) +file(COPY ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/Scripts/otbcli.bat + DESTINATION ${CLI_OUPUT_DIR} + FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) + +# TODO : test if NO_INSTALL is set +install(PROGRAMS ${CLI_OUPUT_DIR}/otbcli.bat + DESTINATION ${OTBCommandLine_INSTALL_RUNTIME_DIR} + COMPONENT Runtime) + +else() +configure_file( ${CMAKE_SOURCE_DIR}/CMake/otbcli.sh.in + ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/Scripts/otbcli + @ONLY ) +file(COPY ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/Scripts/otbcli + DESTINATION ${CLI_OUPUT_DIR} + FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) + +# TODO : test if NO_INSTALL is set +install(PROGRAMS ${CLI_OUPUT_DIR}/otbcli + DESTINATION ${OTBCommandLine_INSTALL_RUNTIME_DIR} + COMPONENT Runtime) + +endif() diff --git a/Modules/Wrappers/QtWidget/src/CMakeLists.txt b/Modules/Wrappers/QtWidget/src/CMakeLists.txt index c7c049bc76..7b208305b8 100644 --- a/Modules/Wrappers/QtWidget/src/CMakeLists.txt +++ b/Modules/Wrappers/QtWidget/src/CMakeLists.txt @@ -89,3 +89,39 @@ target_link_libraries(otbApplicationLauncherQt ${OTBQt4_LIBRARIES} ) otb_module_target(otbApplicationLauncherQt) + +# Where we will install the script in the build tree +get_target_property(GUI_OUPUT_DIR otbApplicationLauncherQt RUNTIME_OUTPUT_DIRECTORY) + +# Generate a script in the build dir, next to the gui launcher +# Need a two-step process since configure_file don't support permissions +file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/Scripts) + + +if (WIN32) +configure_file( ${CMAKE_SOURCE_DIR}/CMake/otbgui.bat.in + ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/Scripts/otbgui.bat + @ONLY ) +file(COPY ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/Scripts/otbgui.bat + DESTINATION ${GUI_OUPUT_DIR} + FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) + +# TODO : test if NO_INSTALL is set +install(PROGRAMS ${GUI_OUPUT_DIR}/otbgui.bat + DESTINATION ${OTBQtWidget_INSTALL_RUNTIME_DIR} + COMPONENT Runtime) + +else() +configure_file( ${CMAKE_SOURCE_DIR}/CMake/otbgui.sh.in + ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/Scripts/otbgui + @ONLY ) +file(COPY ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/Scripts/otbgui + DESTINATION ${GUI_OUPUT_DIR} + FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) + +# TODO : test if NO_INSTALL is set +install(PROGRAMS ${GUI_OUPUT_DIR}/otbgui + DESTINATION ${OTBQtWidget_INSTALL_RUNTIME_DIR} + COMPONENT Runtime) + +endif() -- GitLab