使用CMake正确管理共享库

时间:2016-05-11 14:06:21

标签: c++ cmake shared-libraries rpath

我试图将cmake构建链接到两个共享库,但是RPATH指向两个库中的一个库的绝对路径,而readelf输出不正确其他

我所做的是以下内容:

add_library(foo SHARED IMPORTED)
set_target_properties(foo 
  PROPERTIES IMPORTED_LOCATION ${LIBS_DIRECTORY}/foo/libfoo.so
)

add_library(bar SHARED IMPORTED)
set_target_properties(bar
  PROPERTIES IMPORTED_LOCATION ${LIBS_DIRECTORY}/foo/libbar.so
)

target_link_libraries(myprogram foo bar)

这有效并且链接发生但是readelf会打印以下内容:

0x0000000000000001 (NEEDED)             Shared library: [../../../libs/foo/libfoo.so]
0x0000000000000001 (NEEDED)             Shared library: [libbar.so]
0x000000000000000f (RPATH)              Library rpath: [/home/user/test/trunk/libs/foo:/home/user/test/trunk/libs/bar]

所以基本上两个库中的一个(但只有一个,没有意义)有一个绝对路径,而rpath包含完整路径(这不是我想要做的,因为我想发送可执行文件这两个库位于exectuable的同一文件夹中(或最多一个子文件夹)。

我错过了一些微不足道的事情吗?

0 个答案:

没有答案