Question

I am creating package using cmake

I am having following structure

bin/
    bin1
lib/

    lib1
    lib2

Where lib1 and lib2 are external dynamic library. How can I set RPATH so it will automatically link with lib1 and lib2 ?

Was it helpful?

Solution

I've been fussing with cmake on this as well. Cmake uses CMAKE_SKIP_BUILD_RPATH for linking at build time and CMAKE_INSTALL_RPATH to set the rpath used when the install target is built. cmake has some good info on using its rpath mechanism: http://www.cmake.org/Wiki/CMake_RPATH_handling

An alternative method is to use ldconfig. I notice that when you build svn(1.6.17), it's make install target invokes ldconfig to set rpath.

take a look at $ORIGIN as you'll need that in your rpath to keep it relative to the binary rather than relative to $PWD.

Building a simple (hello-world-esque) example of using ld's option -rpath with $ORIGIN

OTHER TIPS

AFAIK, CMake automatically adds rpaths to all targets, which you are linking with target_link_libraries().

To switch it off there is CMAKE_SKIP_RPATH option.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top