Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在CMake中匹配通配符的文件上循环_Cmake - Fatal编程技术网

在CMake中匹配通配符的文件上循环

在CMake中匹配通配符的文件上循环,cmake,Cmake,我想使用CMake运行一些测试。其中一个测试应该在匹配“fixtures/*.ext”的所有文件上调用验证程序脚本。如何将以下伪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}) ... c

我想使用CMake运行一些测试。其中一个测试应该在匹配“fixtures/*.ext”的所有文件上调用验证程序脚本。如何将以下伪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
。测试有一个整数后缀很重要吗?否则,您可以使用
文件(…)
来提取要使用的文件名(不带扩展名)。

您需要
启用测试来激活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()