我想使用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
我想使用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
像這樣:
file(GLOB files "fixtures/*.ext")
foreach(file ${files})
... calculate ${i} to get the test name
add_test(validate_${i}, "validator", ${file})
endforeach()
但是,這並不爲你計算i
。測試中有一個整數後綴是否很重要?否則,您可以使用file(...)
來提取文件名(不帶擴展名)以供使用。
您需要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()