Use $ORIGIN to load libs from program directory

The RPATH attribute won't expand relative directories (such as ".")
neither can it be a semi-colon separated list; the old way of setting
it was wrong and would lead to libraries being loaded from system
directories instead.
This commit is contained in:
Roland Kaufmann 2013-03-26 22:20:14 +01:00
parent 8c999fc481
commit e63c609111
3 changed files with 8 additions and 5 deletions

View File

@ -262,7 +262,8 @@ endif(MSVC)
#############################################################################
if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
set_target_properties(ResInsight PROPERTIES INSTALL_RPATH "${RESINSIGHT_FINAL_INSTALL_PATH};.")
# tell binary to first attempt to load libraries from its own directory
set_target_properties (ResInsight PROPERTIES INSTALL_RPATH "\$ORIGIN")
# Find Qt libraries and sym links
file (GLOB RESINSIGHT_FILES
@ -275,6 +276,9 @@ if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
endif()
if (${CMAKE_SYSTEM_NAME} MATCHES "Windows")
# put a .exe.local file in the target directory to pick up DLLs from there
install (CODE "exec_program (${CMAKE_COMMAND} ARGS -E touch \$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}${RESINSIGHT_FINAL_NAME}/ResInsight${CMAKE_EXECUTABLE_SUFFIX}.local)")
set (RESINSIGHT_FILES
${QT_BINARY_DIR}/QtCore4.dll
${QT_BINARY_DIR}/QtGui4.dll

View File

@ -114,10 +114,8 @@ if (NOT "${RESINSIGHT_PLATFORM}" STREQUAL "")
set (RESINSIGHT_FINAL_NAME "${RESINSIGHT_FINAL_NAME}-${RESINSIGHT_PLATFORM}")
endif()
set (RESINSIGHT_FINAL_INSTALL_PATH "/usr/${RESINSIGHT_FINAL_NAME}")
set (CMAKE_INSTALL_PREFIX ${CMAKE_BINARY_DIR}/Install/)
#set (CMAKE_INSTALL_PREFIX ${RESINSIGHT_FINAL_INSTALL_PATH})
#set (CMAKE_INSTALL_PREFIX /usr/${RESINSIGHT_FINAL_NAME})
################################################################################
# Application

View File

@ -8,7 +8,8 @@ set(CPP_SOURCES
)
if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
set(RPATH_COMMAND "-Wl,-rpath=${RESINSIGHT_FINAL_INSTALL_PATH} -Wl,-rpath=.")
# since the compiler passes the option to the linker, double quoting is necessary
set (RPATH_COMMAND "-Wl,-rpath,'\\$$ORIGIN'")
endif()
if (${CMAKE_SYSTEM_NAME} MATCHES "Windows")