无法下载CMake的ExternalData

时间:2016-11-03 21:46:28

标签: cmake

我试图让cmake按照this blog上的建议下载我测试所需的外部数据

但无论我尝试什么,CMake都会不断提及一个不存在的本地文件。我的CMake代码是:

include(ExternalData)
set(ExternalData_URL_TEMPLATES
   "http://testdata.local/SoftwareTestData/AutomatedTests/%(algo)/%(hash)"
)

ExternalData_Add_Test(it_GfFullData
   NAME it_GfFull
   COMMAND it_GfFull --input DATA{Flight3LCMLog-with_GF-2016-09-09_10-14-31.00} -t 10 -g 10190 -G 17000
)
ExternalData_Add_Target(it_GfFullData)

ExternalData_Expand_Arguments(it_GfFullData realpath  DATA{Flight3LCMLog-with_GF-2016-09-09_10-14-31.00})
message(STATUS "data = ${realpath}")

我的文件的md5哈希是9aa3da7f7fc62ecf9108febe51a785e9,与此CMakeLists.txt文件在同一目录中我放置了文件Flight3LCMLog-with_GF-2016-09-09_10-14-31.00.md5

http://testdata.local/SoftwareTestData/AutomatedTests/%(algo)/%(hash)algo=md5hash=9aa3da7f7fc62ecf9108febe51a785e9处)我放置了二进制文件。

我的消息行一直在我的本地构建路径中输出文件名。

当我检查网络服务器上的访问日志时,它甚至不会尝试查找该文件。

如何让CMake下载我的数据?我已经通过调试打印输出系统的ExternalData.cmake文件,通过VTK查看他们是如何做到的,等等。但是没有运气。

1 个答案:

答案 0 :(得分:0)

原来我上面的设置完全正确。缺少的步骤是将数据目标添加为测试的依赖项。

之前我通过构建测试并使用ctest运行测试来测试这一点 - 它显然会失败。

添加:

add_dependencies(it_GfFull it_GfFullData)

现在,在构建测试时,它会下载文件。

ctest调用我的测试时,DATA{Flight3LCMLog-with_GF-2016-09-09_10-14-31.00}仍会扩展到令我困惑的原始本地路径,但现在该文件已下载,它是实际数据文件的符号链接。

如果没有add_dependencies步骤,我将不得不确保构建数据目标。我错误地认为ExternalData_Add_Test函数以某种方式确保调用下载目标。