如何告诉CMake在编译我的源代码之前下载外部项目

7

我有自己的代码,依赖于第三方库,例如yaml-cpp。我想在编译自己的源代码之前下载这些第三方库。然而,我无法使用CMake实现。

我成功地通过以下方式下载了yaml-cpp:

ExternalProject_Add(yaml-cpp
                URL https://yaml-cpp.googlecode.com/files/yaml-cpp-0.5.1.tar.gz
                PREFIX ${CMAKE_CURRENT_BINARY_DIR}/yaml-cpp
                CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>

但是当我输入时
cmake ..
make

我的资源已经编译过了。实际上,yaml-cpp是在最后一步下载的。

你知道如何告诉CMake在第一次构建时下载第三方库吗?

谢谢!

2个回答

12

ExternalProject 创建了一个目标。您可以将您的第一个目标(例如您的库)依赖于该目标。然后在构建您的库之前,它会被下载。


11

是的,它有效! 我刚刚添加了这一行

add_dependencies(my_project yaml-cpp)

在编译我的项目之前,已经下载了yaml-cpp。

非常感谢您的帮助!


抱歉,我是stackoverflow的新手。看起来我不能给你的答案点赞,因为我的“声望”太低了。您能告诉我如何接受您的答案吗? - Aleph
哦,我成功地给你的答案点了赞,因为我的声望比几个小时前高了。所以,我只需要知道如何接受你的答案。 - Aleph
太好了!完成了!非常感谢你的帮助! - Aleph
澄清一下:该项目需要成为目标的依赖项,而不是一个CMake项目。也就是说,my_project需要成为一个目标,而不是一个项目。 - natersoz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接