CMake-链接到从ExternalProject_add()下载的库
||
我正在尝试使用ExternalProject_add()下载/安装依赖项。它可以很好地安装,但是我无法弄清楚在下载库之后如何实际链接它们。
我想在刚刚下载的库上调用target_link_libraries(),但是该库的路径因系统而异。
如果这是系统依赖性,则可以只调用find_package()-但未在默认搜索路径上安装软件包。我认为您无法在模块模式下为find_package指定搜索路径。
这是我的CMakeLists.txt的片段,无法使用:
ExternalProject_Add(
protobuf
URL http://protobuf.googlecode.com/files/protobuf-2.4.1.tar.gz
CONFIGURE_COMMAND <SOURCE_DIR>/configure --prefix=<INSTALL_DIR>
PREFIX ${MYPROJ_SOURCE_DIR}/dependencies
)
find_package(protobuf REQUIRED)
set(LIBS ${LIBS} ${PROTOBUF_LIBRARIES})
target_link_libraries (mybinary ${LIBS})
没有找到相关结果
已邀请:
5 个回复
究补闯
当然,这不如使用find_package方便。如果可以使用预构建/预安装的软件包,则应使用find_package。但是,如果您必须从源代码构建另一个程序包作为项目的一部分,则ExternalProject_Add很有用,即使它无法为您提取所有细节。
矾醒忻
从那里开始,每个依赖于它的程序都需要
,当然也需要
。例如:
include_directories-告诉它在那里搜索目录 target_link_libraries-只需添加库即可,就像您命名的一样(不是变量) add_dependencies使它在尝试包括所需的目录之前等待。 那对我有用。与make -j4一起使用。正确获取所有依赖项。
茬贺努充尽
死搭胯
将输出目录添加到搜索路径:
确保在指定链接目录后添加可执行文件:
指定您的项目应链接到的库:
不要忘记依赖外部项目:
宦哨抹存胳