From dcae5db3acf0e914f79f79384cf5562c2c529f23 Mon Sep 17 00:00:00 2001 From: mkroehnert <mkroehnert@042f3d55-54a8-47e9-b7fb-15903f145c44> Date: Thu, 15 May 2014 16:23:16 +0000 Subject: [PATCH] cmake: after 'make install' the package is now relocatable git-svn-id: http://svn.code.sf.net/p/simox/code/trunk@593 042f3d55-54a8-47e9-b7fb-15903f145c44 --- CMakeLists.txt | 38 ++++++++++++-------- CMakeModules/SimoxBuildTreeSettings.cmake.in | 9 +++++ CMakeModules/SimoxConfig.cmake.in | 28 +++++++++++---- VirtualRobot/CMakeLists.txt | 2 +- config.cmake | 9 +++-- 5 files changed, 58 insertions(+), 28 deletions(-) create mode 100644 CMakeModules/SimoxBuildTreeSettings.cmake.in diff --git a/CMakeLists.txt b/CMakeLists.txt index 45ecced70..d23439238 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -74,29 +74,37 @@ export(TARGETS ${SIMOX_EXPORT_TARGET_LIST} export(PACKAGE Simox) # Create the SimoxConfig.cmake and SimoxVersion files -file(RELATIVE_PATH REL_INCLUDE_DIR "${INSTALL_CMAKE_DIR}" - "${INSTALL_INCLUDE_DIR}") # ... for the build tree set(CONF_INCLUDE_DIRS "${PROJECT_SOURCE_DIR}" "${PROJECT_BINARY_DIR}") -set (Simox_DATA_PATH ${Simox_DATA_DIR}) -set (Simox_MACROS_INCLUDE_DIR "${PROJECT_SOURCE_DIR}/CMakeModules") -configure_file(CMakeModules/SimoxConfig.cmake.in - "${PROJECT_BINARY_DIR}/SimoxConfig.cmake" @ONLY) +set(Simox_DATA_PATH ${Simox_DATA_DIR}) +set(Simox_MACROS_INCLUDE_DIR "${PROJECT_SOURCE_DIR}/CMakeModules") + +configure_file(CMakeModules/SimoxBuildTreeSettings.cmake.in + "${PROJECT_BINARY_DIR}/SimoxBuildTreeSettings.cmake" @ONLY) + + # ... for the install tree -set(CONF_INCLUDE_DIRS "\${Simox_CMAKE_DIR}/${REL_INCLUDE_DIR}") -set (Simox_DATA_PATH ${Simox_INSTALL_DATA_DIR}) -set (Simox_MACROS_INCLUDE_DIR "\${Simox_CMAKE_DIR}") +file(RELATIVE_PATH RELATIVE_INSTALL_DIR + "${CMAKE_INSTALL_PREFIX}/${INSTALL_CMAKE_DIR}" + "${CMAKE_INSTALL_PREFIX}") + +set(CONF_INCLUDE_DIRS "${INSTALL_INCLUDE_DIR}") +set(Simox_DATA_PATH "${Simox_INSTALL_DATA_DIR}") +set(Simox_MACROS_INCLUDE_DIR "\${Simox_CMAKE_DIR}") + configure_file(CMakeModules/SimoxConfig.cmake.in - "${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/SimoxConfig.cmake" @ONLY) + "${PROJECT_BINARY_DIR}/SimoxConfig.cmake" @ONLY) + # ... for both configure_file(CMakeModules/SimoxConfigVersion.cmake.in - "${PROJECT_BINARY_DIR}/SimoxConfigVersion.cmake" @ONLY) + "${PROJECT_BINARY_DIR}/SimoxConfigVersion.cmake" @ONLY) -# Install the SimoxConfig.cmake and SimoxConfigVersion.cmake +# Install the SimoxBuildTreeSettings.cmake, SimoxConfig.cmake, and SimoxConfigVersion.cmake install(FILES - "${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/SimoxConfig.cmake" - "${PROJECT_BINARY_DIR}/SimoxConfigVersion.cmake" - DESTINATION "${INSTALL_CMAKE_DIR}" COMPONENT dev) + "${PROJECT_BINARY_DIR}/SimoxBuildTreeSettings.cmake" + "${PROJECT_BINARY_DIR}/SimoxConfig.cmake" + "${PROJECT_BINARY_DIR}/SimoxConfigVersion.cmake" + DESTINATION "${INSTALL_CMAKE_DIR}" COMPONENT dev) install(FILES "${PROJECT_SOURCE_DIR}/CMakeModules/SimoxMacros.cmake" diff --git a/CMakeModules/SimoxBuildTreeSettings.cmake.in b/CMakeModules/SimoxBuildTreeSettings.cmake.in new file mode 100644 index 000000000..d2346b1cb --- /dev/null +++ b/CMakeModules/SimoxBuildTreeSettings.cmake.in @@ -0,0 +1,9 @@ +## Copyright (c) 2014, Nikolaus Vahrenkamp (Karlsruhe Institute of Technology) + +# set the parameters which are different for an in-source build + +set(Simox_INCLUDE_DIRS "@CONF_INCLUDE_DIRS@") + +set(Simox_DATA_PATH "@Simox_DATA_PATH@") + +set(Simox_MACROS_INCLUDE_DIR "@Simox_MACROS_INCLUDE_DIR@") diff --git a/CMakeModules/SimoxConfig.cmake.in b/CMakeModules/SimoxConfig.cmake.in index 9d552b818..efcc47932 100644 --- a/CMakeModules/SimoxConfig.cmake.in +++ b/CMakeModules/SimoxConfig.cmake.in @@ -10,23 +10,37 @@ # Simox_USE_COIN_VISUALIZATION - if Coin3D visualization was selected if(Simox_FOUND) - return() + return() endif() set(Simox_FOUND TRUE) # Compute paths get_filename_component(Simox_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) -set(Simox_INCLUDE_DIRS "@CONF_INCLUDE_DIRS@") - + # Our library dependencies (contains definitions for IMPORTED targets) if(NOT TARGET Simox AND NOT Simox_BINARY_DIR) include("${Simox_CMAKE_DIR}/SimoxTargets.cmake") endif() - # These are IMPORTED targets created by SimoxTargets.cmake set(Simox_LIBRARIES "@Simox_LIBRARIES@") set(Simox_EXECUTABLE "@Simox_EXECUTABLE@") -set(Simox_DATA_PATH "@Simox_DATA_PATH@") + + +if(EXISTS "${Simox_CMAKE_DIR}/CMakeCache.txt") + # In build tree + message(STATUS "Using Simox Source-Build from: ${Simox_CURRENT_CMAKE_DIR}") + include("${Simox_CMAKE_DIR}/SimoxBuildTreeSettings.cmake") +else() + # Installed project + message(STATUS "Using Simox Binary Package from: ${Simox_CMAKE_DIR}") + set(Simox_INCLUDE_DIRS "") + foreach (INCLUDE_DIR @CONF_INCLUDE_DIRS@) + LIST(APPEND Simox_INCLUDE_DIRS "${Simox_CMAKE_DIR}/@RELATIVE_INSTALL_DIR@/${INCLUDE_DIR}") + endforeach () + + set(Simox_DATA_PATH "${Simox_CMAKE_DIR}/@RELATIVE_INSTALL_DIR@/@Simox_DATA_PATH@") + set(Simox_MACROS_INCLUDE_DIR "${Simox_CMAKE_DIR}") +endif() SET(Simox_VISUALIZATION "@Simox_VISUALIZATION@") SET(Simox_USE_COIN_VISUALIZATION "@Simox_USE_COIN_VISUALIZATION@") @@ -42,7 +56,7 @@ SET(Simox_EXTERNAL_CMAKE_INCLUDE "@Simox_EXTERNAL_CMAKE_INCLUDE@") -if (NOT (Simox_FIND_QUIETLY OR VirtualRobot_FIND_QUIETLY)) +if (NOT (Simox_FIND_QUIETLY OR VirtualRobot_FIND_QUIETLY)) MESSAGE(STATUS " * Including ${Simox_CMAKE_DIR}/SimoxMacros.cmake") endif() -include(@Simox_MACROS_INCLUDE_DIR@/SimoxMacros.cmake) +include(${Simox_MACROS_INCLUDE_DIR}/SimoxMacros.cmake) diff --git a/VirtualRobot/CMakeLists.txt b/VirtualRobot/CMakeLists.txt index 66aad122b..7b4788283 100644 --- a/VirtualRobot/CMakeLists.txt +++ b/VirtualRobot/CMakeLists.txt @@ -315,7 +315,7 @@ INSTALL(DIRECTORY ${PROJECT_SOURCE_DIR} DESTINATION "${Simox_INSTALL_HEADER_DIR} PATTERN "examples" EXCLUDE ) -INSTALL(DIRECTORY ${PROJECT_SOURCE_DIR}/data DESTINATION ${Simox_INSTALL_DIR} +INSTALL(DIRECTORY ${PROJECT_SOURCE_DIR}/data DESTINATION ${CMAKE_INSTALL_PREFIX} COMPONENT ApplicationData FILES_MATCHING PATTERN "*.xml" diff --git a/config.cmake b/config.cmake index 8f8927603..f9b3c44a8 100644 --- a/config.cmake +++ b/config.cmake @@ -66,11 +66,10 @@ IF (NOT Simox_CONFIGURED) MESSAGE (STATUS "** SIMOX BIN DIR: ${Simox_BIN_DIR}") MESSAGE (STATUS "** SIMOX DATA DIR: ${Simox_DATA_DIR}") - SET(Simox_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}) - SET(Simox_INSTALL_LIB_DIR ${Simox_INSTALL_DIR}/${LIB_DIR}) - SET(Simox_INSTALL_BIN_DIR ${Simox_INSTALL_DIR}/${BIN_DIR}) - SET(Simox_INSTALL_DATA_DIR ${Simox_INSTALL_DIR}/${DATA_DIR}) - SET(Simox_INSTALL_HEADER_DIR ${Simox_INSTALL_DIR}/include) + SET(Simox_INSTALL_LIB_DIR ${LIB_DIR}) + SET(Simox_INSTALL_BIN_DIR ${BIN_DIR}) + SET(Simox_INSTALL_DATA_DIR ${DATA_DIR}) + SET(Simox_INSTALL_HEADER_DIR include) MESSAGE (STATUS "** SIMOX INSTALL LIB DIR: ${Simox_INSTALL_LIB_DIR}") MESSAGE (STATUS "** SIMOX INSTALL BIN DIR: ${Simox_INSTALL_BIN_DIR}") MESSAGE (STATUS "** SIMOX INSTALL DATA DIR: ${Simox_INSTALL_DATA_DIR}") -- GitLab