6

我正在使用 cmake 创建包

我有以下结构

bin/
    bin1
lib/

    lib1
    lib2

其中 lib1 和 lib2 是外部动态库。如何设置 RPATH 使其自动与 lib1 和 lib2 链接?

4

2 回答 2

6

我也一直在对 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。

构建一个使用 ld 选项 -rpath 和 $ORIGIN 的简单(hello-world-esque)示例

于 2012-03-30T19:58:09.380 回答
0

AFAIK,CMake 会自动将 rpaths 添加到所有目标,这些目标与 target_link_libraries() 链接。

要关闭它,有一个CMAKE_SKIP_RPATH选项。

于 2011-12-06T15:13:22.390 回答