VS Code配置C++语言开发与调试环境(超详细)

本地环境设置

如果您想要设置 C++ 语言环境,您需要确保电脑上有以下两款可用的软件:

  • 文本编辑器
  • C++ 编译器

部分集成开发环境(IDE)同时拥有代码编辑器(文本编辑器)和编译环境,还拥有一整套的开发调试工具包和分析工具,也可以使用这些集成开发环境来减少配置的烦恼,比较典型的集成开发环境有:visual C++6.0(不推荐),dev-C++(不推荐),visual studio(推荐,但是只适用于Windows),codeblock等

关于文本编辑器

它用于编写源代码(C++源代码本质上就是一个后缀名为.cpp的文本文件)。

文本编辑器包括 Windows Notepad、vscode/vscodium 、sublime和 vim/vi等。

文本编辑器的名称和版本在不同的操作系统上可能会有所不同。例如,Notepad 通常用于 Windows 操作系统上,vim/vi 可用于 Windows 和 Linux/UNIX 操作系统上。

通过编辑器创建的文件通常称为源文件,源文件包含程序源代码。C++ 程序的源文件通常使用扩展名 .cpp、.cp 或 .c。

在开始编程之前,请确保您有一个文本编辑器,且有足够的经验来编写一个计算机程序,然后把它保存在一个文件中,编译并执行它。

备注:

vscode和vscodium是同一软件在不同许可证情况下的不同结果,vscode不开源二进制文件,而vscodium完全开源,这对Linux用户可能有所影响(部分linux用户不喜欢不开源的东西,不希望微软对自己做任何监控,vscode会在一定程度上收集用户报告)

.c为C语言的源代码文件,在C++中不建议使用!!!

C++ 编译器

写在源文件中的源代码是人类可读的源。它需要"编译",转为机器语言,这样 CPU 可以按给定指令执行程序。

C++ 编译器用于把源代码编译成最终的可执行程序。

大多数的 C++ 编译器并不在乎源文件的扩展名,但是如果您未指定扩展名,则默认使用 .cpp。

最常用的免费可用的编译器是 GNU 的 C/C++ 编译器,如果您使用的是 HP 或 Solaris,则可以使用各自操作系统上的编译器。

以下部分将指导您如何在不同的操作系统上安装 GNU 的 C/C++ 编译器。这里同时提到 C/C++,主要是因为 GNU 的 gcc 编译器适合于 C 和 C++ 编程语言。

安装 GNU 的 C/C++ 编译器

UNIX/Linux 上的安装

如果您使用的是 Linux 或 UNIX,请在命令行使用下面的命令来检查您的系统上是否安装了 GCC:

$ g++ -v

如果您的计算机上已经安装了 GNU 编译器,则会显示如下消息:

Using built-in specs.
Target: i386-redhat-linux
Configured with: ../configure --prefix=/usr .......
Thread model: posix
gcc version 4.1.2 20080704 (Red Hat 4.1.2-46)

如果未安装 GCC,那么请按照 http://gcc.gnu.org/install/ 上的详细说明安装 GCC。

Mac OS X 上的安装

如果您使用的是 Mac OS X,最快捷的获取 GCC 的方法是从苹果的网站上下载 Xcode 开发环境,并按照安装说明进行安装。一旦安装上 Xcode,您就能使用 GNU 编译器。

Xcode 目前可从 developer.apple.com/technologies/tools/ 上下载。

Windows 上的安装(与C语言编译环境相同)

C++与C适用相同的编译工具MinGW

为了在 Windows 上安装 GCC,您需要安装 MinGW。为了安装 MinGW,请访问 MinGW 的主页 www.mingw.org,进入 MinGW 下载页面,下载最新版本的 MinGW 安装程序,命名格式为 MinGW-.exe。

当安装 MinWG 时,您至少要安装 gcc-core、gcc-g++、binutils 和 MinGW runtime,但是一般情况下都会安装更多其他的项。

添加您安装的 MinGW 的 bin 子目录到您的 PATH 环境变量中,这样您就可以在命令行中通过简单的名称来指定这些工具。

当完成安装时,您可以从 Windows 命令行上运行 gcc、g++、ar、ranlib、dlltool 和其他一些 GNU 工具。

关于VScode及其扩展与MinGW的安装我这里就省略了,可以参考之前的文章:

https://blog.51cto.com/mlxia/6265740

https://www.cnblogs.com/xiaml/articles/17391759.html

注意事项(参照之前的文章补充)

创建项目文件夹

创建一个空文件用来存放C++代码或者项目

image

创建源码文件

在VScode中"File"->"Open Folder"找到刚创建的文件夹并打开。

image

首先创建一个.cpp的源码文件并保存,内容如下:

#include <iostream>
using namespace std;

// main() 是程序开始执行的地方
int main(){
    cout << "Hello World"; // 输出 Hello World
    return 0; 
} 

image

安装"C/C++ Extenson Pack"扩展

这个时候我们在右下角可以看到VScode提示我们安装扩展;我们点击"Install"

image

installing变成uninstall并且没有报错就是安装成功了。

image

这个扩展的名字是"C/C++ Extenson Pack",它和C语言使用的扩展"C/C++"的图标和发布者都是一样的,大家注意区别。

image

接下来需要做VScode针对编译环境的关联设定。

与C语言编译环境的配置需要注意的是3个配置文件的确认:

  • c_cpp_properties.json
  • tasks.json
  • launch.json
生成并配置c_cpp_properties.json

(这里和C语言的tasks.json配置有点区别)

接下来配置编译器路径,按快捷键Ctrl+Shift+P(或者"view"->"Command Palette...")调出命令面板,输入C/C++,选择“Edit Configurations(UI)”进入配置。这里配置两个选项: - 编译器路径:

我的环境是:D:\MinGW\C\mingw64\bin\g++.exe

这里的路径根据大家自己安装的Mingw编译器位置和配置的环境变量位置所决定。

image

你可能出现报错:

Command 'C/C++: Edit Configurations (UI)' resulted in an error (command 'C_Cpp.ConfigurationEditUI' not found)

image

更新下VScode的版本"Install Update":

image

再次重复上面的步骤:

image

在这里需要注意"Compiler path"是你的g++.exe程序的位置。我的环境是:D:\MinGW\C\mingw64\bin\g++.exe

而不是:

D:\MinGW\C\mingw64\bin\gcc.exe

image

IntelliSense 模式:gcc-x64(legacy)(当然是根据你自己的OS环境像对应的。)

其他的保持默认就行了。

配置完成后,此时在侧边栏可以发现多了一个.vscode文件夹,并且里面有一个c_cpp_properties.json文件,内容如下,说明上述配置成功。现在可以通过Ctrl+<`快捷键打开内置终端并进行编译运行了。

image

代码如下:(也可以直接对此文件进行修改)

{
    "configurations": [
        {
            "name": "Win32",
            "includePath": [
                "${workspaceFolder}/**"
            ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "_UNICODE"
            ],
            "compilerPath": "D:/MinGW/C/mingw64/bin/g++.exe",
            "cStandard": "c17",
            "cppStandard": "gnu++14",
            "intelliSenseMode": "gcc-x64"
        }
    ],
    "version": 4
}
生成并配置tasks.json

配置构建任务

接下来,创建一个tasks.json文件来告诉VS Code如何构建(编译)程序。该任务将调用g++编译器基于源代码创建可执行文件。 按快捷键Ctrl+Shift+P调出命令面板,输入tasks,选择“Tasks:Configure Default Build Task”:

image

备注:若出现"Create task.json file from template",则是因为前面的扩展程序"C/C++ Extenson Pack"没有安装导致。

image

再选择“C/C++: g++.exe build active file”:

image

选择后系统自动在.vscode目录下会出现一个名为tasks.json的配置文件,内容如下:

image

代码:

{
	"version": "2.0.0",
	"tasks": [
		{
			"type": "cppbuild",
			"label": "C/C++: g++.exe build active file",
			"command": "D:/MinGW/C/mingw64/bin/g++.exe",
			"args": [
				"-fdiagnostics-color=always",
				"-g",
				"${file}",
				"-o",
				"${fileDirname}\\${fileBasenameNoExtension}.exe"
			],
			"options": {
				"cwd": "D:/MinGW/C/mingw64/bin"
			},
			"problemMatcher": [
				"$gcc"
			],
			"group": {
				"kind": "build",
				"isDefault": true
			},
			"detail": "compiler: D:/MinGW/C/mingw64/bin/g++.exe"
		}
	]
}
生成并配置launch.json

配置调试设置

这里主要是为了在.vscode文件夹中产生一个launch.json文件,用来配置调试的相关信息。点击菜单栏的Run-->Add Configuration

image

选择C++(GDB/LLDB):

image

紧接着会产生一个launch.json的文件;初始的配置内容是:

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": []
}

接下来我们可以点击Add Configuration按钮自己添加配置,也可以直接将我的配置好的json文件内容复制过去,因为些配置对新手不是特别友好,相关具体细节还是需要参考官方文档。下面是笔者的launch.json文件的内容:

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [

        {
            "name": "MyLaunch_C++",  //调试配置的名称,任意你喜欢的有意义的名字均可
            "preLaunchTask": "C/C++: g++.exe build active file",    //调试前执行的任务,就是之前配置的tasks.json中的label字段  **注意与tasks.json文件的关联
            "type": "cppdbg",      //配置类型,对于C++程序只能为cppdbg
            "request": "launch",   //请求配置类型,可以为launch(启动)或attach(附加)
            "program": "${fileDirname}\\${fileBasenameNoExtension}.exe",    //调试程序的路径名称;这里要和tasks.json中配置为-o参数指定的输出文件一致尤其注意后缀名  **注意与tasks.json文件的关联
            "args": [],         //调试传递参数,默认是空的
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": true,     //true显示外置的控制台窗口,false显示内置终端
            "MIMode": "gdb",
            "miDebuggerPath": "D:\\MinGW\\C\\mingw64\\bin\\gdb.exe",           //**这里是你环境中mingw的gdb.exe[与g++.exe程序相同路径文件名不同]的路径哦;注意不是编译器g++.exe的路径 **注意**
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        }
    ]
}

image

修改完成后保存关闭。

验证调试

在cpp文件中点击菜单栏的Debug-->Start Debugging或者使用快捷键F5.

image

可以看到调试程序在运行并为我们通过tasks.json的配置生成了.exe的输出文件。

image

由于我们没有为代码设置断点,因此程序并没有中途停止,大家可以尝试设置断点后进行调试。或者再代码中加入pause语句使程序中途暂停。

image

再次按F5.

image

最后:

其实,在安装了"C/C++ Extenson Pack"扩展后可以i不用创建launch.json配置文件,直接F5开始调试也是可以的。

本文写的比较细致,略显啰嗦,但是对于初学者应该是很有帮助的。

posted @ 2023-05-22 17:30  Arthur古德曼  阅读(6174)  评论(5)    收藏  举报