介绍
我有一个项目,其中包含一个名为“tests”的目标,需要在运行时存在来自远程源的一些提取的资源。目前,我已经使用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 文档得知,当从远程检索时,似乎有一种使用自定义提取脚本的方式。
该文档没有展示自定义提取脚本的示例。它提到了通常使用file(DOWNLOAD)命令,但并未明确展示如何通过自定义提取脚本来复制其默认行为。
我希望实现并使用一个自定义提取脚本,以复制ExternalData的默认行为,这样我就可以添加一个file(ARCHIVE_EXTRACT)命令来提取该压缩档案。
(我还想知道是否将已下载文件的提取作为自定义提取脚本的职责,如果不是,那么在构建时下载该资源的情况下,最好将其放在哪里)。