CMakeLists.txt cmake/modules

Christian Mollekopf mollekopf at kolabsys.com
Thu Jul 11 18:38:05 CEST 2013


 CMakeLists.txt                        |   15 +++++++++++++--
 cmake/modules/LibkolabConfig.cmake.in |   12 +++++-------
 2 files changed, 18 insertions(+), 9 deletions(-)

New commits:
commit 084987d42d837922bc71bd6810ed89f63a36513a
Author: Christian Mollekopf <mollekopf at kolabsys.com>
Date:   Thu Jul 11 18:26:45 2013 +0200

    Deal with relative as well as absolute install paths.
    
    Bug: 2001

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 9ae512c..ae6c684 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -44,6 +44,14 @@ set(INCLUDE_INSTALL_DIR include CACHE STRING "The directory where to install hea
 set(INCLUDE_INSTALL_DIR ${INCLUDE_INSTALL_DIR}/kolab)
 set(CMAKECONFIG_INSTALL_DIR ${LIB_INSTALL_DIR}/cmake/Libkolab )
 
+# Make relative paths absolute (needed later on)
+foreach(p LIB INCLUDE CMAKECONFIG)
+    set(var ${p}_INSTALL_DIR)
+    if(NOT IS_ABSOLUTE "${${var}}")
+        set(${var} "${CMAKE_INSTALL_PREFIX}/${${var}}")
+    endif()
+endforeach()
+
 include(MacroLogFeature)
 
 # Do the building
@@ -177,9 +185,12 @@ install(FILES
     DESTINATION ${INCLUDE_INSTALL_DIR}
 )
 
-install(EXPORT LibkolabExport DESTINATION ${CMAKECONFIG_INSTALL_DIR} FILE LibkolabTargets.cmake )
+#Get the include directory relative to CMAKECONFIG_INSTALL_DIR
+file(RELATIVE_PATH REL_INCLUDE_DIR "${CMAKECONFIG_INSTALL_DIR}" "${INCLUDE_INSTALL_DIR}")
+#Assemble the full relative path. This will be used in the LibkolabConfig.cmake, which will be installed in CMAKECONFIG_INSTALL_DIR
+set(CONF_INCLUDE_DIRS "\${Libkolab_CMAKE_DIR}/${REL_INCLUDE_DIR}")
 
-file(RELATIVE_PATH relInstallDir ${CMAKE_INSTALL_PREFIX}/${CMAKECONFIG_INSTALL_DIR} ${CMAKE_INSTALL_PREFIX} )
+install(EXPORT LibkolabExport DESTINATION ${CMAKECONFIG_INSTALL_DIR} FILE LibkolabTargets.cmake )
 
 configure_file(${Libkolab_MODULE_DIR}/LibkolabConfig.cmake.in ${Libkolab_BINARY_DIR}/LibkolabConfig.cmake @ONLY )
 configure_file(${Libkolab_MODULE_DIR}/LibkolabConfigVersion.cmake.in ${Libkolab_BINARY_DIR}/LibkolabConfigVersion.cmake @ONLY )
diff --git a/cmake/modules/LibkolabConfig.cmake.in b/cmake/modules/LibkolabConfig.cmake.in
index cf0555b..f80e6e2 100644
--- a/cmake/modules/LibkolabConfig.cmake.in
+++ b/cmake/modules/LibkolabConfig.cmake.in
@@ -1,18 +1,16 @@
-get_filename_component(myDir ${CMAKE_CURRENT_LIST_FILE} PATH) # get the directory where I myself am
-get_filename_component(rootDir ${myDir}/@relInstallDir@ ABSOLUTE) # get the chosen install prefix
+get_filename_component(Libkolab_CMAKE_DIR ${CMAKE_CURRENT_LIST_FILE} PATH) #get the directory where this *Config.cmake file is installed 
 
-# set the version of myself
+# set the version
 set(Libkolab_VERSION_MAJOR @Libkolab_VERSION_MAJOR@)
 set(Libkolab_VERSION_MINOR @Libkolab_VERSION_MINOR@)
 set(Libkolab_VERSION_PATCH @Libkolab_VERSION_PATCH@)
 set(Libkolab_VERSION ${Libkolab_VERSION_MAJOR}.${Libkolab_VERSION_MINOR}.${Libkolab_VERSION_PATCH} )
 
-# what is my include directory
-set(Libkolab_INSTALL_PREFIX "${rootDir}")
-set(Libkolab_INCLUDES "${rootDir}/@INCLUDE_INSTALL_DIR@")
+# Set the include directory
+set(Libkolab_INCLUDES "@CONF_INCLUDE_DIRS@")
 
 # import the exported targets
-include(${myDir}/LibkolabTargets.cmake)
+include(${Libkolab_CMAKE_DIR}/LibkolabTargets.cmake)
 
 # set the expected library variable
 set(Libkolab_LIBRARIES kolab )




More information about the commits mailing list