一、CMake断点调试C++,配置json文件
环境:Ubuntu 20.04 / VScode / C++
配置launch.json文件,以及task.json
launch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "g++ - 调试",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/build/cmake_main",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "/usr/bin/gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
// "preLaunchTask": "C/C++: g++.exe build active file"
}
],
}
提示:注意修改其中program的路径,到自己build的exe文件下;注意调试器gdb的路径;注意CMakeLists 加入 -g 的生成编译文件的指令, 如下第四行
CMakeLists.txt
cmake_minimum_required(VERSION 3.0)
add_definitions(-D_GLIBCXX_USE_CXX11_ABI=0)
project(cmake_main)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -O2 -Wall")
link_directories(/usr/local/cuda-11.7/lib64) # 替换成您的 CUDA 安装路径
set(CMAKE_CUDA_COMPILER /usr/local/cuda-11.7/bin/nvcc)
set(Torch_DIR /data/l50037097/libtorch/share/cmake/Torch)
find_package(OpenCV REQUIRED)
find_package(Torch REQUIRED)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED TRUE)
# include_directories(${OpenCV_INCLUDE_DIRS})
## set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${TORCH_CXX_FLAGS}")
enable_language(CUDA) # 启用CUDA语言支持
add_executable(cmake_main main_cpp.cpp)
target_link_libraries(cmake_main "${TORCH_LIBRARIES}" ${OpenCV_LIBS})
set_property(TARGET cmake_main PROPERTY CXX_STANDARD 17)
二、额外配置task.json文件
调试的时候临时加入一行代码,还需要重新编译再调试,我们指定task的任务,就不需要每次调试还得make了
{
"version": "2.0.0",
"options": {
"cwd": "${workspaceFolder}/build"
},
"tasks": [
{
"type": "shell",
"label": "cmake",
"command": "cmake",
"args": 【
".."
】
},
{
"label": "make",
"group": {
"kind": "build",
"isDefault": true
},
"command": "make",
"args": 【
】
},
{
"label": "Build",
"dependsOrder": "sequence",
"dependsOn": 【
"cmake",
"make"
】
}
],
}
总结
具体配置可以参考上一篇博客,这篇简略一点