Vscode使用cmake进行debug的配置教学(教你学会写json配置)


误区

目前csdn上很多的cmake配置,无论是用插件还是写json,都不太方便,经常配置不成功。

比如想要运行slambook里的一些代码,用传统的配置方案都是建立在工作区就在本文件夹创建。
这样的缺点有:

  • 每次切换工作区都要重新配置,麻烦
  • 每次增加外部连接库都要用pkg去find路径,麻烦
  • cmake会有一堆cache文件,导致reload操作很复杂

由此,这篇文章就介绍一种可以应用在整个大工作区的配置方案,而且可以diy设计


一、源代码和CmakeLists

1、源代码和c_cpp_properties.json

我们通常把vscode看成一个文本编辑器,一般而言不用作IDE,所以重点在 c_cpp_properties文件的配置中
所以如果不需要debug,可以只看这一章节,主要是用vscode的高亮和检查来方便写代码。

c_cpp_properties.json示例

{
    "configurations": [
        {
            "name": "Linux",
            "includePath": [
                "${workspaceFolder}/**",
                "/usr/include/eigen3",
                "/usr/include",
                "/usr/local/include"
            ],
            "defines": [],
            "compilerPath": "/usr/bin/gcc",
            "cStandard": "c11",
            "cppStandard": "gnu++14",
            "intelliSenseMode": "linux-gcc-x64"
        }
    ],
    "version": 4
}

Ctrl+Shift+P搜索 c++编辑配置,生成c_cpp_properties.json

由于os的不同,自动生成的json可能不一样。
而我们只需要自己添加includePath就行

这个时候语法高亮就会打开,可以舒服地写代码了。

2、CMakeLists

CMakeLists的编写也是具有高亮的,需要下载插件Cmake
在这里插入图片描述

下载好了之后CMakeLists.txt 开启了高亮和联想。
在这里插入图片描述

注意:要在cmakelists里面开启DEBUG模式

set(CMAKE_BUILD_TYPE "Debug")

二、Cmake配置

1.Tasks.json

先自动生成默认的Tasks.json
然后进行修改
代码如下(示例):

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "label": "build",
            "type": "shell",
            "command": "rm -rf ${fileDirname}/build;mkdir ${fileDirname}/build;cd ${fileDirname}/build;cmake ..;make",
            "args": []
        }
    ]
}

“label”,给vscode的任务代号
“command”,这个相当于你不用IDE的时候用cmake的时候输入的代码
注意用;分隔代码,逐行执行指令。
我这里的命令是在源代码文件的地方创建一个build文件夹,然后执行cmake和make指令生成二进制文件
当然这里如果没有build文档就会报错,我们可以采取linux的 ∣ ∣ || ∣∣方式执行指令,或者直接在程序第一次执行前创建一个空的build。

这里如果采用g++,那就是其他文章里的相关配置,我这里由于采用的是cmake,所以链接和include指令都在cmakelists里面,arg可以不写。

可以看到我的二进制文件是生成在build里面的
在这里插入图片描述

2 . Launch.json配置

Launch.json的作用是告诉vscode调用DEBUG组件
配置代码如下(示例):

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) 启动cmake",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}/build/${fileBasenameNoExtension}",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${fileDirname}",
            "environment": [],
            "externalConsole": false,
            "preLaunchTask": "build",
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                },
                {
                    "description": "将反汇编风格设置为 Intel",
                    "text": "-gdb-set disassembly-flavor intel",
                    "ignoreFailures": true
                }
            ]
        },
        {
            "name": "(gdb) 启动",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}/${fileBasenameNoExtension}",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${fileDirname}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "preLaunchTask": "build",
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        }
    ]
}

代码的下面一部分是默认生成的,我们复制一份到上面
修改name,可以自己取便于辨认,我的是(gdb) 启动cmake

接下来是重要环节!

修改program: 路径指向上文生成的二进制文件所在路径

${fileDirname} //源代码所在文件夹
${fileBasenameNoExtension} //源代码同名文件(删除后缀)

我这里是${fileDirname}/build/${fileBasenameNoExtension}

prelaunchtask:是告诉vscode在执行二进制文件前需要的操作,我们应该把操作指向cmake生成时的tasks的label,我的是叫build。

最后给源代码打上断点,启动debug就可以正常步进了。

在这里插入图片描述

拓展

我这里的配置文件是在所有小工程的顶部
在这里插入图片描述

可以看到.vscode文件夹并不在源代码文件夹中
所以可以在每个chapter中使用,不用重新配置。

  • 16
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
使用VSCode配置OpenCV C++项目之前,你需要确保已经安装了VSCodeCMake,并且已经成功安装了OpenCV库。接下来,你可以按照以下步骤进行配置: 步骤1:创建工作目录 在你的项目文件夹中创建一个名为 `.vscode` 的文件夹。 步骤2:创建 CMakeLists.txt 文件 在你的项目文件夹中创建一个名为 `CMakeLists.txt` 的文件,用于配置CMake。 步骤3:配置 CMakeLists.txt 在 `CMakeLists.txt` 文件中添加以下内容: ```cmake cmake_minimum_required(VERSION 3.12) project(YourProjectName) # 设置 C++ 标准 set(CMAKE_CXX_STANDARD 14) # 寻找 OpenCV 库 find_package(OpenCV REQUIRED) # 添加可执行文件 add_executable(YourExecutableName main.cpp) # 链接 OpenCV 库 target_link_libraries(YourExecutableName ${OpenCV_LIBS}) ``` 请确保将 `YourProjectName` 替换为你的项目名称,将 `YourExecutableName` 替换为你的可执行文件名称。 步骤4:配置 launch.json 在 `.vscode` 文件夹中创建一个名为 `launch.json` 的文件,并添加以下内容: ```json { "version": "0.2.0", "configurations": [ { "name": "(gdb) Launch", "type": "cppdbg", "request": "launch", "program": "${workspaceFolder}/build/YourExecutableName", "args": [], "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [], "externalConsole": false, "MIMode": "gdb", "miDebuggerPath": "/usr/bin/gdb" } ] } ``` 请确保将 `YourExecutableName` 替换为你的可执行文件名称。 步骤5:构建项目 打开VSCode,点击菜单栏的 `Terminal` -> `New Terminal`,进入终端界面。 在终端中执行以下命令,进入项目文件夹: ``` cd /path/to/your/project ``` 然后执行以下命令,使用CMake构建项目: ``` mkdir build cd build cmake .. ``` 步骤6:调试项目 在VSCode的左侧边栏中点击 `Run and Debug` 按钮,然后点击绿色的调试按钮,即可开始调试你的OpenCV C++项目。 希望以上步骤对你有所帮助!如有任何问题,请随时提问。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值