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

Man*_*uel 17 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
Run Code Online (Sandbox Code Playgroud)

Jes*_*erE 28

像这样:

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

但这不i适合你.测试的后缀是否很重要?否则,您可以使用file(...)提取文件名(不带扩展名)来使用.


ric*_*chq 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()
Run Code Online (Sandbox Code Playgroud)