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

How to tell CMake to download external projects before compiling my sources

我有自己的代码,它依赖于第三方库,例如 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下载第三方库吗?

谢谢!

ExternalProject 创建目标。您可以设定第一个目标,例如您的图书馆,依赖于该目标。然后在您开始构建库之前下载它。

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

add_dependencies(my_project yaml-cpp)

编译前下载了 yaml-cpp my_project。

非常感谢您的帮助!