Windows环境下VScode中用Cmake调试配置C++程序

本文为学习笔记,学习资源链接:https://www.bilibili.com/video/BV13K411M78v

Windows环境下VScode中用Cmake调试配置C++程序

  • 1 用g++的命令编译程序
  • 2. 用g++命令调试程序
  • 3. C++程序分文件编写与调试
    • 3.1 分文件编写:
    • 3.2 用g++命令编译多个文件
    • 3.3 编译由多文件生成的程序
  • 4. 基于Cmake实现多文件的编译
  • 5. 配置Json
    • 5.1 launch.json
    • 5.2 tasks.json

1 用g++的命令编译程序

  1. 首先写一个值交换的函数用于演示过程
    Windows环境下VScode中用Cmake调试配置C++程序_第1张图片
  2. 调出Terminal窗口
    Windows环境下VScode中用Cmake调试配置C++程序_第2张图片
  3. 进入当前路径下的终端,输入g++ .\main.cpp回车即可进行编译
    输入g++后,直接输入main.cpp并按Tab键即可自动补齐成上面的形式
    g++后面跟的是需要编译的文件名
    Windows环境下VScode中用Cmake调试配置C++程序_第3张图片
  4. 生成一个a.exe文件,在终端中输入a并按Tab键即可补齐为.\a.exe的形式,表明要运行该程序
    Windows环境下VScode中用Cmake调试配置C++程序_第4张图片

2. 用g++命令调试程序

  1. 同上,在终端中输入g++ -g .\main.cpp -o my_single_swap按回车执行,可得到一个名为my_single_swap.exe的文件
    其中 -g 表示生成带调试信息的.exe文件;-o 表示后面为自己命名的文件名

  2. 想要调试程序,点击如下按钮
    Windows环境下VScode中用Cmake调试配置C++程序_第5张图片

  3. 接着点击C++(GDB/LLDB)接着选择g++.exe - 生成和调试活动文件
    Windows环境下VScode中用Cmake调试配置C++程序_第6张图片
    Windows环境下VScode中用Cmake调试配置C++程序_第7张图片

  4. 在程序中需要的地方设置断点,点击菜单栏中的Run-Start Debugging
    Windows环境下VScode中用Cmake调试配置C++程序_第8张图片

  5. 运行后可以发现,VScode自动编译生成了一个与主函数同名的.exe文件,并且生成了几个.json文件
    其中 launch.json 文件与调试有关,能调试main.exe文件就在于launch.json文件中包含main.exe文件的路径
    Windows环境下VScode中用Cmake调试配置C++程序_第9张图片

总结: VScode单文件的调试:由tasks.json负责编译生成可执行文件(相当于帮你在终端里输入了g++ -g .\main.cpp -o main),之后由launch.json负责调试该生成的可执行文件

3. C++程序分文件编写与调试

3.1 分文件编写:

依然以上面的值交换函数为例,分别建立swap.cpp(用于放置函数),swap.h(用于放置函数声明)
Windows环境下VScode中用Cmake调试配置C++程序_第10张图片
Windows环境下VScode中用Cmake调试配置C++程序_第11张图片
Windows环境下VScode中用Cmake调试配置C++程序_第12张图片
在主函数中也需要包含一下swap.h的头文件

3.2 用g++命令编译多个文件

在终端中输入g++ -g .\main.cpp .\swap.cpp -o my_multi_swap回车即可编译

3.3 编译由多文件生成的程序

执行完上一步后,按照上面说到过的步骤create a new launch.json file,此时点开launch.json文件,如下图:
Windows环境下VScode中用Cmake调试配置C++程序_第13张图片
此时文件要调试的程序还是默认的main.cpp这个文件,不是我们刚刚生成的my_multi_swap.exe文件,这显然是不不对的,因为刚刚已经手动生成了可执行文件,这里只需要更改一下launch.json文件里的路径即可
Windows环境下VScode中用Cmake调试配置C++程序_第14张图片

4. 基于Cmake实现多文件的编译

  1. 在主目录里新建CmakeLists.txt的文件

  2. 在该文件中输入如下命令:
    Windows环境下VScode中用Cmake调试配置C++程序_第15张图片

  3. 配置VScode中的Cmake
    按下ctrl+shift+p点击Cmake:configure,选择GCC 8.1.0的编译器
    Windows环境下VScode中用Cmake调试配置C++程序_第16张图片
    Windows环境下VScode中用Cmake调试配置C++程序_第17张图片
    Windows环境下VScode中用Cmake调试配置C++程序_第18张图片

  4. 用Cmake编译程序
    在终端中输入cd .\build 进入build文件夹
    输入 cmake .. 配置Cmake
    输入mingw32-make.exe回车
    Windows环境下VScode中用Cmake调试配置C++程序_第19张图片
    生成的my_cmake_swap.exe文件将在build文件夹里

  5. 用launch.json调试程序
    打开launch.json文件,将生成的my_cmake_swap.exe添加到json文件的路径中,就可以调试该exe程序
    Windows环境下VScode中用Cmake调试配置C++程序_第20张图片

到目前为止,用Cmake编译调试C++程序的流程已经走完了,注意到在第3步配置Cmake的时候系统自动帮忙生成了build文件夹,这个也可以自己建立文件夹,步骤如下:

  • 在主目录下,终端里输入 mkdir bulid,即建立build这个文件夹
  • 紧接着输入cd build 即进入这个文件夹、
  • 之后是上文第四步中提到的,输入 cmake .. 配置Cmake—>>输入mingw32-make.exe回车

注意
在输入 cmake ..的时候,有可能因为安装了Visual Studio而调用微软的编译器,所以要改为输入cmake -G "MinGW Makefiles" ..进行Cmake的配置

5. 配置Json

正如前面所说的,两个主要的json文件,launch.json 和 tasks.json文件,由tasks.json文件对C++程序进行编译,由launch.json文件对编译生成的exe文件进行调试

5.1 launch.json

Windows环境下VScode中用Cmake调试配置C++程序_第21张图片

launch.json 文件如上图所示,重点关注图中的两个红框部分,这里第二各红框被注释掉,根据我们之前列举的例子,都是手动通过:

  • g++ -g .\main.cpp .\swap.cpp -o my_multi_swap(g++命令)
  • mingw32-make.exe(Cmake 命令)

率先编译好之后生成exe文件,直接修改launch.json里的路径进行调试的,所以不需要执行tasks.json,但是这种方法有个坏处,每次修改完程序之后都需要手动在终端执行一下命令,然后再能调试。那么有没有一种修改完了直接运行就能调试的方法呢?那就需要用到tasks.json。

5.2 tasks.json

  1. 建立一个tasks/.json文件
    输入ctrl+shift+p,在弹出的对话框中输入task,选择第一个:Tasks: configure Task,然后继续点击create tasks.json file from template
    Windows环境下VScode中用Cmake调试配置C++程序_第22张图片
    在这里插入图片描述
  2. 修改tasks.json
    打开tasks.json,可以看到下图所示,相当于我们在输入g++命令
    Windows环境下VScode中用Cmake调试配置C++程序_第23张图片
    根据需要,把相应的部分改成我们期望的即可。下图所示的命令就对应于g++的命令g++ -g .\main.cpp .\swap.cpp -o out
    Windows环境下VScode中用Cmake调试配置C++程序_第24张图片
  3. Cmake的tasks.json
    Windows环境下VScode中用Cmake调试配置C++程序_第25张图片
    上面的命令就相当于在执行
    cd build
    cmake..
    mingw32-make.exe
    Windows环境下VScode中用Cmake调试配置C++程序_第26张图片

你可能感兴趣的:(C++学习笔记,c++)