cmake ctest post test删除文件

时间:2016-12-14 12:30:53

标签: cmake ctest

我有一个cmake项目,经历了许多测试,即

add_test(test_title executable arg1 arg2)

在运行这些测试时,会生成许多文件。 一旦测试运行,我想删除其中一个生成的文件,即

delete(${arg1}.txt)

    or

delete(${arg2}.pdf)

如果您能提供一个例子,我们将非常感激。

2 个答案:

答案 0 :(得分:0)

作为advised in the letter,您可以使用cmake脚本包装实际测试命令。在你的情况下,它可以是:

add_test(NAME test_title
  COMMAND ${CMAKE_COMMAND}
    -Darg1=${arg1}
    -Darg2=${arg2}
    -P ${CMAKE_CURRENT_SOURCE_DIR}/runtest.cmake
)

包装器runtest.cmake可以是:

execute_process(COMMAND executable ${arg1} ${arg2}
  TIMEOUT 1000 # it should be less than in add_test
  RESULT_VARIABLE status
)
file(REMOVE ${arg1}.txt)
file(REMOVE ${arg2}.txt)
if(status)
  MESSAGE(FATAL_ERROR "Test executing status: ${status}")
endif()

答案 1 :(得分:0)

我不确定在问问题时是否可以使用此选项,但是我使用了以下方法:

  • 定义测试:test_title
  • 定义另一个测试:test_title_remove_file
    • depends on test_title(因此将首先运行test_title)
    • 您要删除的
    • requires文件存在(显式优于隐式)
    • 呼叫zend_extension=xdebug.so xdebug.remote_enable=1 xdebug.remote_port=9000 xdebug.remote_host=127.0.0.1 doc

这样,您将获得一个假的额外测试,但至少它将告诉您是否有任何错误。

我的实现:

cmake -E remove <file>