[CMake] How to specify LD_LIBRARY_PATH for a test?

Alexander Neundorf a.neundorf-work at gmx.net
Tue Feb 26 14:06:49 EST 2013


On Tuesday 26 February 2013, Orion Poplawski wrote:
> We have some tests that load libraries at run time.  How can we specify
> that LD_LIBRARY_PATH needs to be set?
> 
> file(WRITE ${CMAKE_SOURCE_DIR}/testsuite/launchtest.c "${LAUNCH}")
> add_executable(launchtest EXCLUDE_FROM_ALL
> ${CMAKE_SOURCE_DIR}/testsuite/launchtest.c)
> add_library(test_ce SHARED EXCLUDE_FROM_ALL libtest_ce.cpp)
> add_custom_target(check COMMAND ${CMAKE_BUILD_TOOL} test DEPENDS launchtest
> test_ce)
> get_target_property(LAUNCHTESTLOCATION launchtest LOCATION)
> execute_process(
>    COMMAND "fgrep" ".pro" "${BASE_SOURCE}/testsuite/Makefile.am"
>    COMMAND "awk" "{printf(\"%s;\",$1)}"
>    OUTPUT_VARIABLE TESTS)
> foreach(TEST ${TESTS})
>          add_test(${TEST} ${LAUNCHTESTLOCATION} ${TEST})
> endforeach(TEST TESTS)
> 
> The test needs to be able to load the test_ce library at run-time.

If you didn't explicitely disable it, cmake builds the executables by default 
with the complete RPATH to all used libraries (the "build RPATH").
This is replaced during make install by the "install RPATH", which is by 
default empty.
So it should actually just work.

Alex


More information about the CMake mailing list