C++开发环境的搭建-Windows:VSCode+mingw64+CMake

文章目录

      • 一、软件安装
        • 1. 网址及下载的软件
        • 2. VSCode中配置关于C++的最简插件:
      • 二、C++调试环境的编译要求
        • 1. 在编译时要带-g参数
        • 2. 多文件编译需要分步编译
      • 三、VSCode的调试配置如下:
        • 1. 单文件调试设置
        • 2. 多文件调试设置
      • 四、VSCode的其他设置
        • 1. 基本设置
        • 2. VSCode向终端输出中文


一、软件安装

1. 网址及下载的软件
  • VSCode下载地址: https://code.visualstudio.com/
  • mingw64下载地址: https://sourceforge.net/projects/mingw-w64/files/mingw-w64/mingw-w64-release/
    C++开发环境的搭建-Windows:VSCode+mingw64+CMake_第1张图片
    推荐下载:x86_64-win32-seh(x86_64-8.1.0-release-win32-seh-rt_v6-rev0.7z)

在C++中有 try…throw…catch,当它执行这种结构时,它需要保存现场还原现场,而 sjlj, seh, dwarf 正是实现这类过程的三种方式:

  • sjlj 全称是 SetJump LongJump,前者设还原点,后者跳到还原点。
  • seh 是 Borland 公司的,微软买了其专利使用权,它利用了FS段寄存器,将还原点压入,收到异常时弹出。
    相较而言,sjlj 是 C 标准库就有的东西,seh 在 2014 年前是有专利的,从性能上说 seh 比 sjlj 快。
  • dwarf 我是在开源平台 MinGW 见到这名称,因为专利原因 MinGW 以前并不支持 seh,也许是为了保证性能,它又提供了 dwarf 这种方式。

也可以尝试一下集成安装包:https://nuwen.net/mingw.html

  • CMake下载地址:https://cmake.org/download/
  • 包管理器vcpkg下载地址(可选):https://vcpkg.io/en/

注意:用cmake编译项目时可能需要指定架构 cmake … -A Win32

  • 控制台(可选):https://conemu.github.io/ 或者 https://github.com/cmderdev/cmder

x86_64-8.1.0-release-win32-seh-rt_v6-rev0.7z解压后的mingw64文件夹假定在D:\mingw64,需要把D:\mingw64\bin的路径加入Path环境变量(可以是用户环境变量)。

2. VSCode中配置关于C++的最简插件:
  • C/C++ Extension Pack (是打包安装,一次性把所有C++相关的插件都安装了)
  • Include Autocomplete
  • Better C++ Syntax
  • C/C++ Snippets
  • GBKtoUTF8

二、C++调试环境的编译要求

1. 在编译时要带-g参数
g++ -g ./test.cpp -o t
2. 多文件编译需要分步编译

分步编译而不是编译链接一起执行,这样能够节省编译时间。

# 第一步:先编译生成.o文件
g++ -g main.cpp -c
g++ -g add.cpp -c
g++ -g multi.cpp -c
# 第二步:链接生成可执行文件
g++ *.o -o main
# 第三步:修改main.cpp源文件,重新生成被修改文件的.o文件。
g++ -g main.cpp -c
# 第四步:再链接生成可执行文件
g++ *.o -o main

三、VSCode的调试配置如下:

1. 单文件调试设置

C++开发环境的搭建-Windows:VSCode+mingw64+CMake_第2张图片
C++开发环境的搭建-Windows:VSCode+mingw64+CMake_第3张图片
C++开发环境的搭建-Windows:VSCode+mingw64+CMake_第4张图片
C++开发环境的搭建-Windows:VSCode+mingw64+CMake_第5张图片
C++开发环境的搭建-Windows:VSCode+mingw64+CMake_第6张图片
C++开发环境的搭建-Windows:VSCode+mingw64+CMake_第7张图片
C++开发环境的搭建-Windows:VSCode+mingw64+CMake_第8张图片
记得要切回源码文件标签页
C++开发环境的搭建-Windows:VSCode+mingw64+CMake_第9张图片
捕获到断点
C++开发环境的搭建-Windows:VSCode+mingw64+CMake_第10张图片
F5键是 运行->启动调试 的快捷键。
接下来配置命令自动化设置(注意要切换到C++的源代码文件页
C++开发环境的搭建-Windows:VSCode+mingw64+CMake_第11张图片
C++开发环境的搭建-Windows:VSCode+mingw64+CMake_第12张图片
C++开发环境的搭建-Windows:VSCode+mingw64+CMake_第13张图片
生成的tasks.json不用修改,只需记录tasks.json文件中的”label“配置,并把label选项的内容拷贝到launch.json中完成配置即可。
C++开发环境的搭建-Windows:VSCode+mingw64+CMake_第14张图片

2. 多文件调试设置

配置基本与前边单文件调试设置类似。结合CMake我们配置如下:
CMakeLists.txt

cmake_minimum_required(VERSION 3.20)
project(test)
add_executable(main main.cpp multip.cpp add.cpp main.h)
add_definitions("-Wall -g")

C++开发环境的搭建-Windows:VSCode+mingw64+CMake_第15张图片
或者使用快捷键Ctrl + Shift + P
C++开发环境的搭建-Windows:VSCode+mingw64+CMake_第16张图片
如果上一步CMake:Configure出现错误,请卸载如下插件并重新安装:
C++开发环境的搭建-Windows:VSCode+mingw64+CMake_第17张图片
然后VSCode将自动扫描本机安装的C++编译器。之后:
C++开发环境的搭建-Windows:VSCode+mingw64+CMake_第18张图片
C++开发环境的搭建-Windows:VSCode+mingw64+CMake_第19张图片

这里要注意:VSCode中将一个打开的目录作为项目目录,并在该目录中自动生成.vscode目录——该目录中的settings.json作为CMake插件在VSCode中的配置文件。应该将本项目的总控CMakeLists.txt放置在和.vscode/同级的目录中,否则VSCode的CMake插件将不识别项目的目录。

在.vscode/中只涉及两个配置文件(多文件调试场景):settings.json和launch.json。
其中settings.json主要用于配置CMake插件,而launch.json用于调试配置(tasks.json用于配置调试前的动作)。
launch.json文件需要修改以下内容:

{
    "version": "0.2.0",
    "configurations": [
      "program": "${fileDirname}\\build\\${fileBasenameNoExtension}.exe",
      "miDebuggerPath": "D:\\mingw64\\bin\\gdb.exe"
    ]
}

主要是在program的配置内容中加了build这一级目录(插件的约定)。
接下来F5调试项目如下:
C++开发环境的搭建-Windows:VSCode+mingw64+CMake_第20张图片
也可以点击状态栏的如下图标:
在这里插入图片描述
如果修改了源文件,则需要点击Build按钮重新编译一下。

四、VSCode的其他设置

1. 基本设置

C++开发环境的搭建-Windows:VSCode+mingw64+CMake_第21张图片
C++开发环境的搭建-Windows:VSCode+mingw64+CMake_第22张图片
C++开发环境的搭建-Windows:VSCode+mingw64+CMake_第23张图片

2. VSCode向终端输出中文

在VSCode编辑的源文件为UTF-8编码的情况下,如果在VSCode的终端中需要输出中文,则需要通过CMake的配置向编译器传递参数:

# 向g++传递编译参数-fexec-charset=gbk,这里Windows的cmd及powershell控制台终端默认都是GBK编码。
add_definitions("-Wall -g -fexec-charset=gbk")

默认g++的源文件输入编码为UTF-8,输出文件也为UTF-8,如果要修改输入输出文件的编码格式,需向g++传递如下参数:

-finput-charset=utf-8 -fexec-charset=gbk

你可能感兴趣的:(C/C++,c++,vscode,windows,cmake)