2016-11-03 30 views
0

我試圖讓cmake的按照在this blog無法獲得的CMake的ExternalData下載

建議下載我需要爲我測試的外部數據,但不管我怎麼努力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)相同的目錄,我把二進制文件。

該消息行我一直在我的本地構建路徑中輸出文件名。

當我檢查Web服務器上的訪問日誌時,它甚至不嘗試查找該文件。

我怎樣才能讓CMake下載我的數據?我一直在使用調試打印輸出填充系統的ExternalData.cmake文件,通過VTK查看它們是如何執行的,等等。但是沒有運氣。

回答

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函數在某種程度上負責確保下載目標被調用。