我想使用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()