2010-02-02 171 views
14

我想使用CMake來運行一些測試。其中一項測試應在所有匹配「fixtures/*。ext」的文件上調用驗證腳本。如何將下面的僞CMake轉換成真正的CMake?在CMake中循環匹配通配符的文件

i=0 
for file in fixtures/*.ext; do 
    ADD_TEST(validate_${i}, "validator", $file) 
    let "i=i+1" 
done 

回答

24

像這樣:

file(GLOB files "fixtures/*.ext") 
foreach(file ${files}) 
    ... calculate ${i} to get the test name 
    add_test(validate_${i}, "validator", ${file}) 
endforeach() 

但是,這並不爲你計算i。測試中有一個整數後綴是否很重要?否則,您可以使用file(...)來提取文件名(不帶擴展名)以供使用。

5

您需要enable_testing才能激活CMake的測試機器。 add_test函數需要測試的名稱和要運行的命令,其語法如下所示。

要添加計數器,您可以使用math()函數。通過指定輸入的完整路徑,以下內容可以讓您用完源代碼版本。

cmake_minimum_required(VERSION 2.6) 
enable_testing() 

file(GLOB files "${CMAKE_CURRENT_SOURCE_DIR}/fixtures/*.ext") 
set(validator ${CMAKE_CURRENT_SOURCE_DIR}/validator) 
set(i 0) 
foreach(filename ${files}) 
    add_test(NAME "validate_${i}" 
     COMMAND "${validator}" ${filename}) 
    math(EXPR i "${i} + 1") 
endforeach()