链接CMake中的共享库(它依赖于其他共享库)

链接CMake中的共享库(它依赖于其他共享库),cmake,caffe,Cmake,Caffe,我试图构建一个链接到共享库(名为“caffe”)的可执行文件。共享库依赖于另一个共享库(名为“cblas”)。当我尝试在CMake文件中链接到caffe时,会显示以下错误: 找不到libcaffe.so所需的libcblas.so.3(请尝试使用-rpath或 -rpath链接) 我在CMakeLists.txt中使用以下语句: link_directories(${BINARIES}/lib) add_library(CAFFE_LIBRARY SHARED IMPORTED) set_tar

我试图构建一个链接到共享库(名为“caffe”)的可执行文件。共享库依赖于另一个共享库(名为“cblas”)。当我尝试在CMake文件中链接到caffe时,会显示以下错误:

找不到libcaffe.so所需的libcblas.so.3(请尝试使用-rpath或 -rpath链接)

我在CMakeLists.txt中使用以下语句:

link_directories(${BINARIES}/lib)
add_library(CAFFE_LIBRARY SHARED IMPORTED)
set_target_properties(CAFFE_LIBRARY PROPERTIES IMPORTED_LOCATION ${BINARIES}/lib/libcaffe.so)
target_link_libraries(${PROJECT_NAME} CAFFE_LIBRARY)
“cblas”和“caffe”库都位于
${BINARIES}/lib
文件夹中

我是否还需要将cblas.so添加到
target\u link\u库中
?另外,我不是在构建caffe,所以通过CMake构建它并将其作为依赖项保留不是一个选项


对于在链接时需要解决共享库的依赖关系树的相同问题,是否有其他可行的解决方案?

浏览库的GitHub树,在我看来,它提供了一个包配置文件。因此,如果您以正常方式安装了它,您应该能够将其作为一个包找到,而不是自己定义导入的目标:

find_package(Caffe)
include_directories(${Caffe_INCLUDE_DIRS})
add_definitions(${Caffe_DEFINITIONS})    # ex. -DCPU_ONLY

add_executable(caffeinated_application main.cpp)
target_link_libraries(caffeinated_application ${Caffe_LIBRARIES})

上面的例子来自关于这个主题的。

我有一个自定义版本的caffe.so。因此,从源代码构建Caffe在这里不是一个选项。@iotaSingh这是非常相关的信息,应该在问题中;请在中编辑它。未经修改的Caffe是否也依赖于CBLA?如果是这样的话,它的包配置文件应该仍然对您可用。如果没有,请在问题中澄清,我将相应地扩展答案。