文章目录

  • 一、软件安装
  • 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/

    推荐下载: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。

  • MSYS2(可选,可替代单独的mingw64,推荐使用MSYS2 MINGW64
    )下载地址:https://www.msys2.org/

如果希望拥有一个包含本地编译环境的Bash,可以考虑安装一个MSYS2。它由一个名为mintty的命令行终端 ,git和subversion之类的版本控制系统,tar和awk之类的工具,甚至是autotools之类的构建系统组成,全部基于Cygwin修改。在MSYS2环境下,可以使用make或gcc/g++构建程序。MSYS2模拟的环境的根目录在“D:\msys64”,且家目录位于“D:\msys64\home”。MSYS2提供了一个包管理器:pacman(https://wiki.archlinux.org/title/pacman),可以如下安装编译工具集:

# 更新软件包(y:yes,u:update)

pacman -Syu

# 安装工具链

pacman -S --needed base-devel mingw-w64-x86_64-toolchain

# 查找cmake是否已安装

pacman -Qs cmake 或者 pacman -Ss cmake

# 安装cmake

pacman -S  mingw-w64-x86_64-cmake

# 安装neovim

pacman -S mingw-w64-x86_64-neovim

# 安装git

pacman -S git

# 安装mingw下的Autotools

pacman -S "${MINGW_PACKAGE_PREFIX}-autotools"

在MSYS2环境下编译程序

# 假定CMakeLists.txt配置如下
cmake_minimum_required(VERSION 3.2)
project(test)
set(CMAKE_AR  D:/msys64/mingw64/bin/ar.exe)
set(CMAKE_C_COMPILER  D:/msys64/mingw64/bin/gcc.exe)
set(CMAKE_CXX_COMPILER  D:/msys64/mingw64/bin/g++.exe)
add_executable(test test.cpp)

# 注意,如果使用mingw64来编译,则需要加上参数-G "MinGW Makefiles"
cmake -S . -B build -G "MinGW Makefiles"
cmake --build build/
cd build/
./test.exe

Debug激活的套件是MinGW64:

Windows下C++开发环境的搭建(VSCode+mingw64+CMake)_windows

如果希望VSCode使用MSYS2提供的终端,可以在.vscode/settings.json中配置如下:

{
    "terminal.integrated.profiles.windows": {
        "MSYS2 MINGW64": {
            "path": "cmd.exe",
            "args": [
                "/c",
                "D:\\msys64\\msys2_shell.cmd -defterm -here -no-start -mingw64"
            ]
        }
    }
}
  • CMake下载地址:https://cmake.org/download/
  • 包管理器vcpkg下载地址(可选):https://vcpkg.io/en/

使用可参考:https://blog.csdn.net/gudufuyun/article/details/113787953

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

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

VSCode中替换终端为Cmder可以如下配置:

- 局部配置在项目文件夹下的.vscode/settings.json中进行。

- 全局配置——Ctrl+Shift+P然后输入open user setting,打开settings.json配置文件,在其中进行设置。

// 配置终端 cmder
    "terminal.integrated.profiles.windows": {
        "cmd.exe": {
            "path": "C:\\Windows\\system32\\cmd.exe",
            "args": [
                "/k D:\\cmder\\vendor\\init.bat"
            ]
        }
    },
    // 设置为默认终端
    "terminal.integrated.defaultProfile.windows": "cmd.exe",


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

如果使用MSYS2环境,则无需单独下载mingw64。可以在MSYS2环境中通过pacman下载编译工具链。Windows的Path环境变量也需要相应追加msys64/mingw64/bin的路径,以识别gcc/g++的文件位置。

2. VSCode中配置关于C++的最简插件:

  • C/C++ Extension Pack (是打包安装,一次性把所有C++相关的插件都安装了)
  • Include Autocomplete
  • Better C++ Syntax
  • C/C++ Snippets
  • GBKtoUTF8
  • MSYS2/Cygwin/MinGW/Clang support(用于MSYS2环境)

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

1. 在编译时要带-g参数

g++ -g ./test.cpp -o test

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. 单文件调试设置

Windows下C++开发环境的搭建(VSCode+mingw64+CMake)_c++_02


Windows下C++开发环境的搭建(VSCode+mingw64+CMake)_cmake_03


Windows下C++开发环境的搭建(VSCode+mingw64+CMake)_vscode_04


Windows下C++开发环境的搭建(VSCode+mingw64+CMake)_vscode_05


Windows下C++开发环境的搭建(VSCode+mingw64+CMake)_vscode_06


Windows下C++开发环境的搭建(VSCode+mingw64+CMake)_windows_07


Windows下C++开发环境的搭建(VSCode+mingw64+CMake)_c++_08


记得要切回源码文件标签页

Windows下C++开发环境的搭建(VSCode+mingw64+CMake)_vscode_09


捕获到断点

Windows下C++开发环境的搭建(VSCode+mingw64+CMake)_cmake_10


F5键是 运行->启动调试 的快捷键。

接下来配置命令自动化设置(注意要切换到C++的源代码文件页

Windows下C++开发环境的搭建(VSCode+mingw64+CMake)_c++_11


Windows下C++开发环境的搭建(VSCode+mingw64+CMake)_c++_12


Windows下C++开发环境的搭建(VSCode+mingw64+CMake)_windows_13


生成的tasks.json不用修改,只需记录tasks.json文件中的”label“配置,并把label选项的内容拷贝到launch.json中完成配置即可。

Windows下C++开发环境的搭建(VSCode+mingw64+CMake)_c++_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")

# 或者
cmake_minimum_required(VERSION 3.20)
project(learn01)

file(GLOB SRCS "./*.cpp")
file(GLOB HDRS "./*.h")

# include_directories("dev/include/") 指定头文件的路径:-I
# link_directories("dev/lib") 指定库文件的路径:-L

add_definitions("-Wall -g -fexec-charset=gbk")
#message("CMAKE_CXX_COMPILE_FEATURES = ${CMAKE_CXX_COMPILE_FEATURES}")

add_executable(testbed ${SRCS} ${HDRS})

# 支持:cxx_std_98,cxx_std_11,cxx_std_14,cxx_std_17,cxx_std_20
#target_compile_features(testbed PRIVATE cxx_std_17)
#target_link_libraries(testbed gsl gslcblas) 指定要链接的库:-l

Windows下C++开发环境的搭建(VSCode+mingw64+CMake)_c++_15


或者使用快捷键Ctrl + Shift + P

Windows下C++开发环境的搭建(VSCode+mingw64+CMake)_vscode_16


如果上一步CMake:Configure出现错误,请卸载如下插件并重新安装:

Windows下C++开发环境的搭建(VSCode+mingw64+CMake)_vscode_17


这里CMake插件用于自动补全,语法提示和加亮显示。CMake Tools用于配置cmake工具的使用。

然后VSCode将自动扫描本机安装的C++编译器。之后:

Windows下C++开发环境的搭建(VSCode+mingw64+CMake)_vscode_18


Windows下C++开发环境的搭建(VSCode+mingw64+CMake)_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调试项目如下:

Windows下C++开发环境的搭建(VSCode+mingw64+CMake)_vscode_20


也可以点击状态栏的如下图标:

Windows下C++开发环境的搭建(VSCode+mingw64+CMake)_windows_21


如果修改了源文件,则需要点击Build按钮重新编译一下。


CMake Tools插件默认在CMakeLists.txt文件被打开和编辑后(保存)会自动进行configure配置。这有时候很不应景,可以通过在.vscode/settings.json中配置将上述自动配置功能关闭。

{
    "cmake.configureOnOpen": false,
    "cmake.configureOnEdit": false,
}

四、VSCode的其他设置

1. 基本设置

Windows下C++开发环境的搭建(VSCode+mingw64+CMake)_vscode_22


Windows下C++开发环境的搭建(VSCode+mingw64+CMake)_windows_23


Windows下C++开发环境的搭建(VSCode+mingw64+CMake)_c++_24

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