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

时间:2017-05-16 17:41:34

标签: cmake ctest

我有一个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,并通过CTest支持测试而不先运行CMake。当CMake构建test目标并运行make test时,上面的函数执行正常。但是,当我使用CTest运行相同的文件时,${testname}为空。当与CTest一起运行时,CTestList中是否不支持函数变量,或者是否存在我缺少的东西?

1 个答案:

答案 0 :(得分:0)

我没有明确的答案,但经过一些测试后,看起来CMake会为输入文件执行预处理步骤。具体来说,它读入CTestList.cmake,评估变量和函数,并生成“扩展”CTestTestfile.cmake。使用转向脚本运行CTest不会运行预处理步骤,因此不会扩展变量和函数。互联网上的一些人建议,转向脚本中使用的CTestTestfile.cmake应该首先由CMake生成。不幸的是,这不是我正在寻找的用例,但它可能会帮助其他人遇到这个问题。