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

Ale*_*eph 6 cmake

我有自己的代码,它依赖于第三方库,例如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>
Run Code Online (Sandbox Code Playgroud)

但是当我打字的时候

cmake ..
make
Run Code Online (Sandbox Code Playgroud)

我的资料来源之前编译过.实际上,yaml-cpp是在最后一步下载的.

你知道如何告诉CMake在第一步建立步骤下载第三方库吗?

谢谢!

usr*_*567 9

ExternalProject创造一个目标.您可以使您的第一个目标(例如您的库)依赖于该目标.然后在开始构建库之前下载它.


Ale*_*eph 5

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

add_dependencies(my_project yaml-cpp)
Run Code Online (Sandbox Code Playgroud)

并在编译my_project之前下载了yaml-cpp。

非常感谢您的帮助!