【发布时间】:2021-01-14 12:08:01
【问题描述】:
简介
我有一个带有“测试”目标的项目,它需要从远程源中提取的一些资产在运行时出现在构建树中。目前我已经使用ExternalData 在构建时从远程 url 检索压缩文件并将其放入构建树中。
/tests/CMakeLists.txt:
include(ExternalData)
set(ExternalData_URL_TEMPLATES "https://data.com/path/samples.zip")
# [...]
ExternalData_Add_Test(MyData
NAME MyTest
COMMAND MyProjectTests DATA{samples.zip})
ExternalData_Add_Target(MyData)
(在源代码树中,我有一个文件 /tests/samples.zip.md5,其中包含存档的 md5。)
问题
我想在检索到此存档后对其进行提取。通过阅读 CMake documentation,似乎有一种方法可以在从远程检索时使用自定义提取脚本。
文档没有显示自定义提取脚本的示例。它提到 file(DOWNLOAD) 命令是正常使用的,但它没有明确显示它的默认行为如何被自定义提取脚本复制。
我希望实现和使用复制 ExternalData 的默认行为的自定义提取脚本,以便我可以添加 file(ARCHIVE_EXTRACT) 命令来提取存档。
(我还想知道提取下载的文件是否应该是自定义提取脚本的职责,如果不是,最好的放置位置是,因为资产仅在构建时下载)。
【问题讨论】:
标签: c++ cmake post-build