【问题标题】:Looping over files matching wildcard in CMake在CMake中循环匹配通配符的文件
【发布时间】:2010-02-02 10:33:52
【问题描述】:

我想使用 CMake 运行一些测试。其中一项测试应在所有匹配“fixtures/*.ext”的文件上调用验证器脚本。怎样才能把下面的伪CMake变成真正的CMake?

i=0
for file in fixtures/*.ext; do
  ADD_TEST(validate_${i}, "validator", $file)
  let "i=i+1"
done

【问题讨论】:

    标签: cmake


    【解决方案1】:

    像这样:

    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】:

      您需要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()
      

      【讨论】:

        猜你喜欢
        • 2010-09-07
        • 2013-11-19
        • 1970-01-01
        • 2013-04-03
        • 2015-07-24
        • 2014-07-07
        • 2011-03-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多