我正在设计一个用于分发的动态库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结构中搜索其依赖项。