基本上我想实现这个工作流程:
从 Windows 系统(或任何平台)上的存储库中 checkout 。
运行一些获取依赖项的工具,包括和库,并将它们放在适当的位置(如 Windows 上的“\Program Files\Microsoft Visual Studio 10.0\VC\Lib and\Includes”)
运行 CMake(在 win 上创建 MSVS 项目)
打开MSVS项目并编译。
我希望在大多数平台上都有这个工作流程。
我不想手动下载依赖项
如何在不将依赖项存储在存储库中的情况下做到这一点? 实现这一目标的最佳方法是什么?
最佳答案
在 CMake 中,您可以使用 file(DOWNLOAD URL PATH)
到 download a file ,将其与自定义命令结合以下载和解压缩:
set(MY_URL "http://...")
set(MY_DOWNLOAD_PATH "path/to/download/to")
set(MY_EXTRACTED_FILE "path/to/extracted/file")
if (NOT EXISTS "${MY_DOWNLOAD_PATH}")
file(DOWNLOAD "${MY_URL}" "${MY_DOWNLOAD_PATH}")
endif()
add_custom_command(
OUTPUT "${MY_EXTRACTED_FILE}"
COMMAND command to unpack
DEPENDS "${MY_DOWNLOAD_PATH}")
您的目标应该取决于自定义命令的输出,然后当您运行 CMake 时,将下载该文件,并在您构建、提取和使用时。
这一切都可以封装在一个宏中以使其更易于使用。
您还可以查看使用 CMake 模块 ExternalProject这可能会做你想做的事。
关于c++ - 如何以跨平台方式+CMake自动下载C++依赖?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8153519/