咖啡:如何构建具有相对路径的依赖库的动态库

时间:2019-06-03 20:10:27

标签: cmake caffe relative-path

我正在设计一个用于分发的动态库libmylib.so。这就是为什么我使用相对路径将其链接到其依赖项。我只需要将所有依赖项复制到我自己的结构中,生成一个简单的tar并与任何人共享即可。对于大多数依赖项,它都可以正常工作,但是我正在努力地对Caffe(https://github.com/BVLC/caffe)进行同样的操作。

我正在通过此命令使用CMakeLists.txt编译Caffe,以便生成动态库libcaffe.so.1.0.0

cmake -DBUILD_SHARED_LIBS=ON ..

我的问题是:如何使用相对路径构建Caffe链接libcaffe.so.1.0.0及其依赖项?我应该在Caffe项目CMakeLists.txt上进行哪些修改以实现此目标?

在我的项目中,我喜欢波纹管,但是我不知道如何将Caffe CMakeLists.txt修改为相同的东西。

SET (DEP_LIBS ${CMAKE_SOURCE_DIR}/../libs)
SET (CMAKE_SHARED_LINKER_FLAGS "-Wl,-rpath,$ORIGIN/../libs")

target_link_libraries(
    mylib 
    ${DEP_LIBS}/libcaffe.so.1.0.0
    ${DEP_LIBS}/otherlibs.so)

它适用于任何otherlibs.so,但不适用于libcaffe.so.1.0.0。完成ldd -d libmylib.so之后,我看到Caffe在其原始路径而不是在otherlibs.so的我自己的lib结构中搜索其依赖项。

0 个答案:

没有答案