代码之家  ›  专栏  ›  技术社区  ›  Manuel

循环查找与cmake中通配符匹配的文件

  •  16
  • Manuel  · 技术社区  · 16 年前

    我想用cmake运行一些测试。其中一个测试应该在所有匹配“fixtures/*.ext”的文件上调用一个验证器脚本。如何将以下伪CMAKE转换为真正的CMAKE?

    i=0
    for file in fixtures/*.ext; do
      ADD_TEST(validate_${i}, "validator", $file)
      let "i=i+1"
    done
    
    2 回复  |  直到 16 年前
        1
  •  27
  •   JesperE    16 年前

    这样地:

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

    但这不算 i 为你。您对测试有一个整数后缀很重要吗?否则你可以用 file(...) 提取要使用的文件名(不带扩展名)。

        2
  •  5
  •   richq luc    16 年前

    你需要 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()
    
    推荐文章