如何在调试器中运行CTest测试

ran*_*dom 6 gdb cmake ctest

假设我有CMakeLists.txt

add_executable(mytarget main.cpp)

enable_testing()
add_test(mytarget_test0 mytarget -option0)
Run Code Online (Sandbox Code Playgroud)

有什么简单的方法如何使用某些特定CTest测试的所有命令行选项在GDB中运行mytarget?(除了在CMakeLists中搜索测试,然后手动将add_test参数复制粘贴到命令行之外?)

现实生活中的场景:我使用ctest运行所有测试,但失败了,我想在调试器中快速打开它。

在其他构建系统中,有命令行参数可使用gdb,例如在Meson meson test --gdb testname中的bazel中bazel --run_under=gdbserver。我没有找到与CTest类似的东西

ran*_*dom 7

可以使用参数获取测试命令:

ctest -R $regex_matching_test -V -N
Run Code Online (Sandbox Code Playgroud)

作为输出,您将得到类似:

Test project ../cmake-build-debug-gcc7
Constructing a list of tests
Done constructing a list of tests

1: Test command: ../cmake-build-debug-gcc7/my_tool  "-v" "test0"
  Test #1: my_tool_test0

Total Tests: 1
Run Code Online (Sandbox Code Playgroud)

然后使用regexp可以获取gdb的命令行参数