在 CTest 中,为什么我的函数的变量参数没有设置?

In CTest, why is the variable argument to my function not set?

我有一个包含此函数定义和调用的 CTestList.cmake 文件:

function(add_test_r testname )
  add_test(
    ${testname} python executeRegressionTestCase.py ${testname}
  )
endfunction(add_test_r)

add_test_r(Test01)

我需要支持直接通过 CMake 进行测试,cmake ..; make test,并且在没有先 运行ning CMake 的情况下通过 CTest。当 CMake 构建 test 目标并且我 运行 make test 时,上面的函数执行得很好。但是,当我 运行 与 CTest 相同的文件时, ${testname} 是空的。当 运行 CTest 时,CTestList 是否不支持函数变量?还是我遗漏了什么?

我没有明确的答案,但经过一些测试后,CMake 似乎对输入文件进行了预处理。具体来说,它读取 CTestList.cmake,计算变量和函数,并生成 "expanded" CTestTestfile.cmake。 运行 带有引导脚本的 CTest 不 运行 预处理步骤,因此变量和函数不会扩展。网上有几个人建议,引导脚本中使用的CTestTestfile.cmake应该首先由CMake生成。不幸的是,这不是我正在寻找的用例,但它可能会帮助 运行 解决此问题的其他人。