From 1ce4c3fe135fe9b018f4d493dce1edcfad33688d Mon Sep 17 00:00:00 2001 From: iphydf Date: Thu, 6 Oct 2016 15:13:47 +0100 Subject: [PATCH] Install libraries with RPATH. This makes deployment easier, as the install libpath is used to look up dependent libraries. --- CMakeLists.txt | 1 + cmake/MacRpath.cmake | 24 ++++++++++++++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 cmake/MacRpath.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index fb130ce8..8668312a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,6 +20,7 @@ set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake) include(ApiDsl) include(CheckCCompilerFlag) +include(MacRpath) include(ModulePackage) set(CMAKE_MACOSX_RPATH ON) diff --git a/cmake/MacRpath.cmake b/cmake/MacRpath.cmake new file mode 100644 index 00000000..ae5429dc --- /dev/null +++ b/cmake/MacRpath.cmake @@ -0,0 +1,24 @@ +# Taken from https://cmake.org/Wiki/CMake_RPATH_handling#Always_full_RPATH. +# +# In many cases you will want to make sure that the required libraries are +# always found independent from LD_LIBRARY_PATH and the install location. Then +# you can use these settings: + +# Use, i.e. don't skip the full RPATH for the build tree. +set(CMAKE_SKIP_BUILD_RPATH FALSE) + +# When building, don't use the install RPATH already +# (but later on when installing). +set(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE) + +set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib") + +# Add the automatically determined parts of the RPATH +# which point to directories outside the build tree to the install RPATH. +set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) + +# The RPATH to be used when installing, but only if it's not a system directory. +list(FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES "${CMAKE_INSTALL_PREFIX}/lib" isSystemDir) +if("${isSystemDir}" STREQUAL "-1") + set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib") +endif()