Lei*_*sen 13 command cmake ctest
我正在使用CTest构建一些测试.通常,我可以通过以下行来设置测试:
ADD_TEST(Test_Name executable args)
Run Code Online (Sandbox Code Playgroud)
但是,我遇到了一个问题,我有一些测试需要运行两个命令才能使它工作,有什么方法我可以在一个ctest中运行两个程序,或者我需要创建一个新的测试每个?
谢谢.
ric*_*chq 19
该add_test命令只接受一个可执行文件,但您可以运行任何真正的脚本可执行文件.要以跨平台的方式执行此操作,请在CMake中编写脚本.CMake的有-P运行的CMake的脚本语言任意块当您运行选项make或者make test,而不是在Makefile文件生成时间.
可悲的是,你无法将参数传递给这样的脚本.但是你可以将变量设置为值,这同样好.
您可以调用此脚本runtests.cmake,它运行命令CMD1和CMD2并检查每个命令的非零返回代码,如果发生这种情况,则返回CMake本身并返回错误:
macro(EXEC_CHECK CMD)
execute_process(COMMAND ${CMD} RESULT_VARIABLE CMD_RESULT)
if(CMD_RESULT)
message(FATAL_ERROR "Error running ${CMD}")
endif()
endmacro()
exec_check(${CMD1})
exec_check(${CMD2})
Run Code Online (Sandbox Code Playgroud)
...然后添加你的测试用例如下:
add_executable(test1 test1.c)
add_executable(test2 test2.c)
add_test(NAME test
COMMAND ${CMAKE_COMMAND}
-DCMD1=$<TARGET_FILE:test1>
-DCMD2=$<TARGET_FILE:test2>
-P ${CMAKE_CURRENT_SOURCE_DIR}/runtests.cmake)
Run Code Online (Sandbox Code Playgroud)
$<TARGET_FILE:test1>在构建文件生成时扩展到可执行文件的完整路径.当您运行make test或等效时,将运行"cmake -P runtests.cmake"将CMD1和CMD2变量设置为相应的测试程序.然后,脚本将按顺序执行您的2个程序.如果任一测试程序失败,则整个测试失败.如果需要查看测试的输出,可以运行make test ARGS=-V
| 归档时间: |
|
| 查看次数: |
6245 次 |
| 最近记录: |