[cmake-developers] Modifying RPATH feature to run tests uninstalled

Stephen Kelly steveire at gmail.com
Fri Feb 17 06:06:05 EST 2012


Marcel Loose wrote:

> Hi,
> 
> On Fri, 2012-02-17 at 08:51 +0100, Alexander Neundorf wrote:
> 
> -- 8< ---- 8< ---- 8< ---- 8< ---- 8< ---- 8< ---- 8< ---- 8< ---- 8< --
> 
>> > So the suggestion is
>> > 
>> > a) Change CMAKE_SKIP_RPATH to only skip RPATH when installing, but
> not when
>> > building (I don't know if that's easy in CMake), or alternatively
> provide
>> > another CMAKE_ variable to do that.
>> > 
>> > b) Implement something like:
>> > set_property(TARGET foo APPEND PROPERTY TEST_ENVIRONMENT "foo=bar")
>> > 
>> > 
>> > Possibly both a) and b).
>> > 
>> > Thoughts/comments?
>> 
>> b) is IMO definitely a missing feature.
>> (but even with that, we (KDE) would have to keep a macro, because we
> can't
>> expect that all developers know how to set this properly for all
> platforms.
>> ...or, since it is a target property, this could be also intialized
> from a
>> CMAKE_TEST_ENVIRONMENT cmake variable).
> 
> Maybe I'm missing the point but there is a property ENVIRONMENT for
> tests:
> http://cmake.org/cmake/help/cmake-2-8-docs.html#prop_test:ENVIRONMENT

That indeed looks like what was discussed in one of the links I posted.

However I tried it out and it didn't work for me (with CMAKE_SKIP_RPATH):
 
stephen at hal:~/dev/build/qt/grantlee$ LD_LIBRARY_PATH=$PWD/templates/lib 
./templates/tests/testsafestring_exec 
********* Start testing of TestSafeString *********
Config: Using QTest library 4.7.4, Qt 4.7.4
PASS   : TestSafeString::initTestCase()
PASS   : TestSafeString::testCombining()
PASS   : TestSafeString::testAppending()
PASS   : TestSafeString::testChopping()
PASS   : TestSafeString::testReplacing()
PASS   : TestSafeString::cleanupTestCase()
Totals: 6 passed, 0 failed, 0 skipped
********* Finished testing of TestSafeString *********
Qt( ) KDE ( ) 
stephen at hal:~/dev/build/qt/grantlee$ ctest -V .
UpdateCTestConfiguration  from 
:/home/stephen/dev/build/qt/grantlee/DartConfiguration.tcl
Parse Config file:/home/stephen/dev/build/qt/grantlee/DartConfiguration.tcl
UpdateCTestConfiguration  from 
:/home/stephen/dev/build/qt/grantlee/DartConfiguration.tcl
Parse Config file:/home/stephen/dev/build/qt/grantlee/DartConfiguration.tcl
Test project /home/stephen/dev/build/qt/grantlee
Constructing a list of tests
Done constructing a list of tests
Checking test dependency graph...
Checking test dependency graph end
test 1
      Start  1: testsafestring

1: Test command: 
/home/stephen/dev/build/qt/grantlee/templates/tests/testsafestring_exec
1: Test timeout computed to be: 1500
1: /home/stephen/dev/build/qt/grantlee/templates/tests/testsafestring_exec: 
error while loading shared libraries: libgrantlee_core.so.0: cannot open 
shared object file: No such file or directory
 1/11 Test  #1: testsafestring ...................***Failed    0.00 sec
Qt( ) KDE ( ) 
stephen at hal:~/dev/src/grantlee{master}$ git diff 
diff --git a/templates/tests/CMakeLists.txt b/templates/tests/CMakeLists.txt
index d2e37d2..ad471c7 100644
--- a/templates/tests/CMakeLists.txt
+++ b/templates/tests/CMakeLists.txt
@@ -83,6 +83,7 @@ macro(GRANTLEE_TEMPLATES_UNIT_TESTS)
                   ${_testresource_rcc_src}
     )
     add_test(${_testname} ${_testname}_exec )
+    set_property(TEST ${testname} PROPERTY ENVIRONMENT 
"LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/templates/lib")


Do you see anything wrong there?

Thanks,

Steve.






More information about the cmake-developers mailing list