[CMake] How to get RPATH option (-Wl, -rpath, /path/to/local/lib) ?

Franck Houssen franck.houssen at inria.fr
Fri Feb 2 05:40:50 EST 2018


The wiki do not cover how to handle rpath when you need to provide a mylib.pc or mylib.cmake file in the install directory of your library: this is why I asked ! 

If you need to provide a pc file like this: 
>> more mylib.pc 
prefix=${CMAKE_INSTALL_PREFIX} 
exec_prefix=${prefix} 
includedir=${prefix}/include 
libdir=${exec_prefix}/lib 
Cflags: -I${includedir} 
Libs: -L${libdir} -lmylib 

The question is : how do you do when you need RPATH in the pc file ? 

Do you hard-code (this may not be portable) the rpath option : 
>> more mylib.pc 
prefix=${CMAKE_INSTALL_PREFIX} 
exec_prefix=${prefix} 
includedir=${prefix}/include 
libdir=${exec_prefix}/lib 
Cflags: -I${includedir} 
Libs: -Wl,-rpath, -L${libdir} -lmylib 

Or is there a specific variable to handle this ? Like for instance something like this 

>> more mylib.pc 
prefix=${CMAKE_INSTALL_PREFIX} 
exec_prefix=${prefix} 
includedir=${prefix}/include 
libdir=${exec_prefix}/lib 
Cflags: -I${includedir} 
Libs: ${CMAKE_RPATH_LINKER_OPTION}, -L${libdir} -lmylib 

----- Mail original -----

> De: "Kris Thielemans" <kris.f.thielemans at gmail.com>
> À: "Franck Houssen" <franck.houssen at inria.fr>, "CMake Mail List"
> <cmake at cmake.org>
> Envoyé: Vendredi 2 Février 2018 08:06:12
> Objet: RE: [CMake] How to get RPATH option (-Wl, -rpath, /path/to/local/lib)
> ?

> Hi

> There a wiki page covering this

> https://cmake.org/Wiki/CMake_RPATH_handling

> I find it a bit confusing (and the example code for the “full RPATH” option
> seems to set CMAKE_INSTALL_RPATH twice), but it should help.

> It might be outdated for OSX as El Capitan introduced extra security
> requirements such that the recommendations on the wiki no longer seem to
> work. You can see some of our struggles with this here

> https://github.com/CCPPETMR/SIRF/pull/79

> We seem to have found a solution using CMAKE_INSTALL_NAME_DIR but any other
> help with that appreciated.

> Kris

> From: CMake [mailto:cmake-bounces at cmake.org] On Behalf Of Franck Houssen
> Sent: 01 February 2018 09:46
> To: CMake Mail List <cmake at cmake.org>
> Subject: Re: [CMake] How to get RPATH option (-Wl, -rpath,
> /path/to/local/lib) ?

> OK, so I believe I just need to write "-Wl,rpath" in my templates of pc/cmake
> files !...

> Franck

> ----- Mail original -----

> > De: "Franck Houssen" < franck.houssen at inria.fr >
> 
> > À: "CMake Mail List" < cmake at cmake.org >
> 
> > Envoyé: Mercredi 31 Janvier 2018 10:39:51
> 
> > Objet: [CMake] How to get RPATH option (-Wl,-rpath,/path/to/local/lib) ?
> 

> > How to get RPATH option (-Wl,-rpath,/path/to/local/lib) ?
> 

> > I would like to create a *.pc/cmake file for users to find a library I
> > provide. As there is possibly a LOT of dependencies (libraries) I may not
> > even be able to list, the most simple way to do that is to use RPATH. I
> > know
> > that for gcc, RPATH is set with "-Wl,-rpath". But what about others
> > compilers (pgi, icc) ? This option could not be the same.
> 

> > Is it possible to "grab" the correct RPATH option (-Wl,-rpath) according to
> > the compiler ? Something like a CMAKE_RPATH_OPTIONS to substitute in a
> > *.pc/cmake.in template file ? (to create a *.pc/cmake file in the install
> > directory using configure_file)
> 

> > Franck
> 

> > --
> 

> > Powered by www.kitware.com
> 

> > Please keep messages on-topic and check the CMake FAQ at:
> > http://www.cmake.org/Wiki/CMake_FAQ
> 

> > Kitware offers various services to support the CMake community. For more
> > information on each offering, please visit:
> 

> > CMake Support: http://cmake.org/cmake/help/support.html
> 
> > CMake Consulting: http://cmake.org/cmake/help/consulting.html
> 
> > CMake Training Courses: http://cmake.org/cmake/help/training.html
> 

> > Visit other Kitware open-source projects at
> > http://www.kitware.com/opensource/opensource.html
> 

> > Follow this link to subscribe/unsubscribe:
> 
> > https://cmake.org/mailman/listinfo/cmake
> 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://cmake.org/pipermail/cmake/attachments/20180202/fdabf6c6/attachment.html>


More information about the CMake mailing list