use*_*920 5 c++ cmake launch ctest visual-studio-code
我有两个 cmake 单元测试来检查 url 和 json 帮助程序类,在我的项目的 CMakeLists.txt 中声明,如下所示:
########################################
# CMakeLists.txt - Tests #
########################################
add_executable(urltest test/url.cpp)
add_test(NAME URLTest COMMAND urltest)
add_executable(jsontest test/json.cpp)
add_test(NAME JSONTest COMMAND jsontest )
Run Code Online (Sandbox Code Playgroud)
我在 VSCode 的测试视图中直观地获得了测试单元,并且我可以在发布模式下完美运行这两个单元: 在发布模式下执行单元测试
现在,如果我想使用另一个按钮对其进行调试,我必须选择一个启动配置,这需要为每个单元测试手动创建一个启动配置: 在调试模式下执行单元测试
我当前的 launch.json 文件需要为每个单元测试提供一个配置,这是不可能维护的:
########################################
# CMakeLists.txt - Tests #
########################################
add_executable(urltest test/url.cpp)
add_test(NAME URLTest COMMAND urltest)
add_executable(jsontest test/json.cpp)
add_test(NAME JSONTest COMMAND jsontest )
Run Code Online (Sandbox Code Playgroud)
我猜问题只是属性program,我们如何将VSCode测试视图上单击的程序映射到唯一的启动配置?例如如下所示:
{ // launch.json
"version": "0.2.0",
"configurations": [
{
"name": "CTest-urltest",
"type": "lldb",
"request": "launch",
"program": "${workspaceFolder}/build/urltest",
"args": [],
"initCommands": ["breakpoint set -n main -N entry"],
"exitCommands": ["breakpoint delete entry"],
"cwd": "${workspaceFolder}"
},
{
"name": "CTest-jsontest",
"type": "lldb",
"request": "launch",
"program": "${workspaceFolder}/build/jsontest",
"args": [],
"initCommands": ["breakpoint set -n main -N entry"],
"exitCommands": ["breakpoint delete entry"],
"cwd": "${workspaceFolder}"
}
]
}
Run Code Online (Sandbox Code Playgroud)
小智 5
正如建议的那样,优先选择${cmake.testProgram}作为${command:cmake.launchTargetPath}程序,因为这允许您在能够调试测试的同时拥有不同的启动目标。
包括"args": [ "${cmake.testArgs}" ]能够运行特定测试。如果没有这个,即使您只选择了一个,所有测试都将被调试。
{
"name": "(ctest) Launch",
"type": "cppdbg",
"cwd": "${workspaceFolder}",
"request": "launch",
"program": "${cmake.testProgram}",
"args": [ "${cmake.testArgs}" ],
// other options...
}
Run Code Online (Sandbox Code Playgroud)
{
"name": "(ctest) Launch",
"type": "cppvsdbg",
"request": "launch",
"program": "${cmake.testProgram}",
"args": [ "${cmake.testArgs}" ],
// other options...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4165 次 |
| 最近记录: |