这个
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})
…然后像这样添加测试用例:
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)
$<TARGET_FILE:test1>
在生成生成生成文件时扩展到可执行文件的完整路径。当你奔跑
制作测试
或者类似的,它将运行“cmake-p runtests.cmake”,将cmd1和cmd2变量设置为适当的测试程序。然后脚本将按顺序执行您的2个程序。如果任何一个测试程序失败,整个测试都将失败。如果需要查看测试的输出,可以运行
make test ARGS=-V