我正在使用 cmake 创建包
我有以下结构
bin/
bin1
lib/
lib1
lib2
其中 lib1 和 lib2 是外部动态库。如何设置 RPATH 使其自动与 lib1 和 lib2 链接?
我也一直在对 cmake 大惊小怪。Cmake 在构建时使用 CMAKE_SKIP_BUILD_RPATH 进行链接,并使用 CMAKE_INSTALL_RPATH 设置构建安装目标时使用的 rpath。cmake 有一些关于使用其 rpath 机制的好信息: http ://www.cmake.org/Wiki/CMake_RPATH_handling
另一种方法是使用 ldconfig。我注意到当你构建 svn(1.6.17) 时,它的 make install 目标调用 ldconfig 来设置 rpath。
看一下 $ORIGIN,因为您需要在 rpath 中保持它相对于二进制文件而不是相对于 $PWD。
AFAIK,CMake 会自动将 rpaths 添加到所有目标,这些目标与 target_link_libraries() 链接。
要关闭它,有一个CMAKE_SKIP_RPATH
选项。