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