编译共享库时传递CMake链接目录

编译共享库时传递CMake链接目录,cmake,Cmake,假设我有一个C项目,其结构如下(简化): 关键是,当我试图编译lib并将其与extra\u lib链接时,我得到一个错误,即某些库未找到,我猜这意味着link\u目录是extra\u lib的本地目录 现在,问题是如何使它与依赖项一起传播?我希望它的工作方式是,将extra_lib添加为子目录并作为我的lib的依赖项,将自动将链接目录从extra_lib添加到lib链接过程中 链接过程如下所示: (一些外部库)->extra_lib-->lib-->demo app首先,像包含_目录和链接_目录

假设我有一个C项目,其结构如下(简化):

关键是,当我试图编译
lib
并将其与
extra\u lib
链接时,我得到一个错误,即
某些库未找到,我猜这意味着
link\u目录
extra\u lib
的本地目录

现在,问题是如何使它与依赖项一起传播?我希望它的工作方式是,将
extra_lib
添加为子目录并作为我的lib的依赖项,将自动将链接目录从
extra_lib
添加到
lib
链接过程中

链接过程如下所示:

(一些外部库)->extra_lib-->lib-->demo app

首先,像
包含_目录
链接_目录
这样的命令很少需要。事实上,使用
target\u include\u目录
target\u链接库
几乎总是更好的选择

其次,您的方法失败的原因是您需要让CMake知道
某些库的存在。您可以这样做:

add_library(some_lib SHARED IMPORTED)
set_target_properties(some_lib
    PROPERTIES
        IMPORTED_LOCATION ${EXTERNAL_DIR}/lib/libsome_lib.so)
然后,之后:

target_link_libraries(extra_lib some_lib)

工作起来很有魅力!非常感谢。
add_library(some_lib SHARED IMPORTED)
set_target_properties(some_lib
    PROPERTIES
        IMPORTED_LOCATION ${EXTERNAL_DIR}/lib/libsome_lib.so)
target_link_libraries(extra_lib some_lib)