diff --git a/CMakeLists.txt b/CMakeLists.txt --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -35,6 +35,24 @@ cmake_policy(SET CMP0063 NEW) endif() +# RPATH/RUNPATH settings +if (UNIX) + # Add CMAKE_INSTALL_FULL_LIBDIR to the RPATH to be used when installing, + # but only if it isn't a standard system directory. + list(FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES "${CMAKE_INSTALL_FULL_LIBDIR}" isSystemLibDir) + list(FIND CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES "${CMAKE_INSTALL_FULL_LIBDIR}" isSystemCxxLibDir) + list(FIND CMAKE_C_IMPLICIT_LINK_DIRECTORIES "${CMAKE_INSTALL_FULL_LIBDIR}" isSystemCLibDir) + if("${isSystemLibDir}" STREQUAL "-1" AND "${isSystemCxxLibDir}" STREQUAL "-1" AND "${isSystemCLibDir}" STREQUAL "-1") + set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_FULL_LIBDIR}") + endif() + + # Add directories which are in the linker search path (but outside the project) + # to the RPATH to be used when installing + set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) + # no libs or plugins are designed to be used from the build dir, so directly link with install rpath + set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE) +endif (UNIX) + #################################################### # Where to look first for cmake modules, # before ${CMAKE_ROOT}/Modules/ is checked diff --git a/MarbleMacros.cmake b/MarbleMacros.cmake --- a/MarbleMacros.cmake +++ b/MarbleMacros.cmake @@ -40,12 +40,6 @@ marblewidget ) install( TARGETS ${_target_name} DESTINATION ${MARBLE_PLUGIN_INSTALL_PATH} ) -set_target_properties( ${_target_name} PROPERTIES - INSTALL_RPATH_USE_LINK_PATH TRUE - SKIP_BUILD_RPATH TRUE - BUILD_WITH_INSTALL_RPATH TRUE - ) - endmacro( marble_add_plugin _target_name ) # these plugins are slightly different @@ -60,12 +54,6 @@ marblewidget ) install( TARGETS ${_target_name} DESTINATION ${QT_PLUGINS_DIR}/designer ) -set_target_properties( ${_target_name} PROPERTIES - INSTALL_RPATH_USE_LINK_PATH TRUE - SKIP_BUILD_RPATH TRUE - BUILD_WITH_INSTALL_RPATH TRUE - ) - endmacro( marble_add_designer_plugin _target_name ) if( WIN32 ) diff --git a/src/lib/marble/declarative/CMakeLists.txt b/src/lib/marble/declarative/CMakeLists.txt --- a/src/lib/marble/declarative/CMakeLists.txt +++ b/src/lib/marble/declarative/CMakeLists.txt @@ -52,12 +52,6 @@ ) endif() -set_target_properties( marbledeclarative PROPERTIES - INSTALL_RPATH_USE_LINK_PATH TRUE - SKIP_BUILD_RPATH TRUE - BUILD_WITH_INSTALL_RPATH TRUE -) - if(WIN32) install(TARGETS marbledeclarative RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX} ARCHIVE DESTINATION lib) else()