我使用 Ctest 运行一堆我使用 add_test()
注册的谷歌测试。目前,这些测试不接受任何参数。但是,我想在运行 ctest
时给他们所有参数(所有参数通用,特别是 --gtest_output=xml
)。
我听说使用该--test-command
选项是可能的,但是,我看到我们需要将--test-command
与--build-and-test
一起使用。有这种用法的例子吗?
ctest
参数的格式在 CTest 文档中指定如下:
ctest --build-and-test <path-to-source> <path-to-build> --build-generator <generator> [<options>...] [--build-options <opts>...] [--test-command <command> [<args>...]]
因此,例如,在Visual Studio上,您可以从构建文件夹运行测试Test1
(对源目录使用..
,对二进制目录使用.
):
ctest --build-and-test .. . --build-generator "Visual Studio 16 2019" --test-command Test1 --gtest_output=xml
从 CMake 3.17 开始,您现在可以在定义测试本身的 CMake 文件中指定要传递给 CTest 的参数(以及单个测试的参数)。CMAKE_CTEST_ARGUMENTS
变量采用以分号分隔的参数列表以传递给 CTest。因此,坚持使用上面的例子,您可以执行以下操作:
set(CMAKE_CTEST_ARGUMENTS "--build-and-test;${CMAKE_SOURCE_DIR};${CMAKE_BINARY_DIR};--build-generator;${CMAKE_GENERATOR};--test-command;Test1;--gtest_output=xml")