0
点赞
收藏
分享

微信扫一扫

《软件工具》手把手教你使用Visual Studio Code开发C/C++(Windows)

夏沐沐 2022-02-07 阅读 46


C/C++的开发工具很多,微软的Visual Studio,QT等都是不错的选择,但是这些IDE都过于庞大,而且有很多IDE都是收费的。笔者这里推荐GCC+Make+代码编辑器的方式来开发C/C++,该方式不仅适用于PC端,还适用于嵌入式。

接下来说说需要那些软件吧。

(1) VSCode:超好用的编辑器,支持几乎所有主流的开发语言的语法高亮、智能代码补全、自定义热键、括号匹配、代码片段、代码对比 Diff、Git 等特性,支持插件扩展,并针对网页开发和云端应用开发做了优化。软件跨平台支持 Win、Mac 以及 Linux,运行流畅,可谓是微软的良心之作,也是本文要重点介绍的。

(2) GCC:GCC是GNU操作系统的官方编译器。已经被大多数类Unix操作系统采纳为标准的编译器。GCC 的意思也只是 GNU C Compiler 而已。经过了这么多年的发展,GCC 已经不仅仅能支持 C 语言;它现在还支持 Ada 语言、C++ 语言、Java 语言、Objective C 语言、Pascal 语言、COBOL语言,以及支持函数式编程和逻辑编程的 Mercury 语言,等等。而 GCC 也不再单只是 GNU C 语言编译器的意思了,而是变成了 GNU Compiler Collection 也即是 GNU 编译器家族的意思了。另一方面,说到 GCC 对于操作系统平台及硬件平台支持,概括起来就是一句话:无所不在。针对Windows平台的GCC就是MinGW。

(3) Git:代码管理工具,但是我们这里要使用的是下载git附带的git bash。这个bash是基于mingw的,非常轻量,甚至于make都没有,但是可以安装相应的插件来支持make,wget等工具。

以上软件都是开源免费的,随便你玩!

1 Visual Studio Code安装

Visual Studio Code安装非常简单。

1.根据使用的操作系统,直接从 Visual Studio Code 官网下载安装最新版。

​​下载地址​​

《软件工具》手把手教你使用Visual Studio Code开发C/C++(Windows)_C/C++

安装很简单,这里就不在赘述了。

《软件工具》手把手教你使用Visual Studio Code开发C/C++(Windows)_VScode_02

2.打开 VS Code,点击 “Extensions” 图标,搜索 C/C++ 插件(由 Microsoft 提供),点击安装。

《软件工具》手把手教你使用Visual Studio Code开发C/C++(Windows)_git_03

如果有需要可以安装VS Code自带的编译器。

《软件工具》手把手教你使用Visual Studio Code开发C/C++(Windows)_Windows_04

3.安装中文插件。

《软件工具》手把手教你使用Visual Studio Code开发C/C++(Windows)_json_05

重启应用,Visual Studio Code就是中文界面了。



2 GCC编译工具

前面安装的Visual Studio Code只能说是一个代码编辑器,而编译代码需要编译器,Linux系统的编译器是GCC,而Windows的C/C++编译器是Microsoft Visual C++,那么要想在Windows也能GCC等一系列编译工具,就需要安装MinGW。

​​Microsoft Visual C+​​

​​MinGW 地址​​

MinGW,是Minimalist GNUfor Windows的缩写。它是一个可自由使用和自由发布的Windows特定头文件和使用GNU工具集导入库的集合,允许你在GNU/Linux和Windows平台生成本地的Windows程序而不需要第三方C运行时(C Runtime)库。

MinGW 是用于进行 Windows 应用开发的 GNU 工具链(开发环境),它的编译产物一般是原生 Windows 应用,虽然它本身不一定非要运行在 Windows 系统下(是的 MinGW 工具链也存在于 Linux、BSD 甚至 Cygwin 下)。说的通俗点,MinGW就是你在Windows下使用GNU工具链的一个编译工具。

​​MinGW下载地址​​

进入下载页面。

《软件工具》手把手教你使用Visual Studio Code开发C/C++(Windows)_C/C++_06

【注】下载压缩包,不要下载离线安装的版本,而且安装难度较大,这里要选择非安装版本。

《软件工具》手把手教你使用Visual Studio Code开发C/C++(Windows)_C/C++_07

这就是压缩包,下载解压,直接配置下环境变量就可以使用。

《软件工具》手把手教你使用Visual Studio Code开发C/C++(Windows)_git_08

《软件工具》手把手教你使用Visual Studio Code开发C/C++(Windows)_json_09

然后在命令窗口中输入下面的命令验证安装是否成功:

#gcc -v

《软件工具》手把手教你使用Visual Studio Code开发C/C++(Windows)_VScode_10

3 make工具安装

对于单个文件, 使用GCC编译就行,但是对于大型的工程,就需要写Makefile来管理工程,这就需要一个工具来识别Makefile文件,也就是make工具,在Windows中没有直接可用的安装包,需要安装第三方的make工具。

在安装make工具之前,先来看看什么是makefile?Makefile 可以简单的认为是一个工程文件的编译规则,描述了整个工程的编译和链接等规则。其中包含了那些文件需要编译,那些文件不需要编译,那些文件需要先编译,那些文件需要后编译,那些文件需要重建等等。编译整个工程需要涉及到的,在 Makefile 中都可以进行描述。换句话说,Makefile 可以使得我们的项目工程的编译变得自动化,不需要每次都手动输入一堆源文件和参数。

本文的make工具是依赖Git工具的,我相信很多朋友都用过Git,但是很少使用Git的make等功能。

Git的bash实际上也就是一个mingw,是可以支持部分Linux指令的,但是只有少部分。在编译代码的时候经常会使用make命令反而在bash下默认是不支持的。

​​Make工具下载地址​​

《软件工具》手把手教你使用Visual Studio Code开发C/C++(Windows)_Windows_11

下载make-4.1-2-without-guile-w32-bin.zip 文件。

把该文件进行解压,把解压出来的文件全部拷贝的git的安装目录下:

C:\Program Files\Git\mingw64

把文件夹进行合并,如果跳出来需要替换的文件要选择不替换。

《软件工具》手把手教你使用Visual Studio Code开发C/C++(Windows)_json_12

这样在git bash窗口下就可以执行make了。

《软件工具》手把手教你使用Visual Studio Code开发C/C++(Windows)_json_13

没有安装Git先安装Git工具。

​​Git下载地址​​



4使用Visual Studio Code开发C/C++

4.1创建新的工程项目

选择一个文件夹,空白的即可。然后在VS Code中选择该文件夹即可。

《软件工具》手把手教你使用Visual Studio Code开发C/C++(Windows)_Windows_14

最后创建的工程如下:

《软件工具》手把手教你使用Visual Studio Code开发C/C++(Windows)_C/C++_15

4.2配置工程

接下来就是配置工程。


配置settings.json


点击“在.vscode/settings.json中编辑",修改为自己安装git bash的路径:

"terminal.integrated.shell.windows": "C:\\Program Files\\Git\\bin\\bash.exe"

《软件工具》手把手教你使用Visual Studio Code开发C/C++(Windows)_Windows_16

打开终端,就可以使用Bash了。

《软件工具》手把手教你使用Visual Studio Code开发C/C++(Windows)_VScode_17


配置c_cpp_properties.json


c_cpp_properties的作用是配置代码的智能语法辅助功能。

打开c_cpp_properties.json配置文件,输入以下内容:

{
"configurations": [
{
"name": "Win32",
"includePath": [
"D:/gcc/mingw64/include",
"${workspaceFolder}"
],
"defines": [

],
"compilerPath": "D:/gcc/mingw64/bin/gcc.exe",
"intelliSenseMode": "gcc-x64",
"browse": {
"limitSymbolsToIncludedHeaders": true,
"databaseFilename": "",
"path": [
"${workspaceFolder}"
]
}
}
],
"version": 4
}

name:这是用于标记使用的平台的标签。除了win32还可以选Linux或Mac。也就是说,这个json里“configuration“下可以写三组配置,只要每组配置前面写上不同的平台,即可在不同的操作系统上使用就会自动适配不同的配置。

includePath:头文件路径。第一个目录是C语言标准库的目录, 剩下的几个目录直接从Makefile里复制然后稍微修改下即可。"${workspaceFolder}"表示项目文件夹;

defines:全局宏定义,这里的宏定义只写在源码中。VS Code只是一个编辑器,它检查代码的时候并不会去读makefile,因此有些宏定义需要自行配置。

compilerPath:编译器的路径。

intelliSenseMode:因为我用的是gcc所以选gcc-x64。

browse:源文件搜索路径。用来做代码补全和查找定义的。这个路径和includePath不同,browse.path是自动递归所有子目录的。而include.path默认只看本目录。

​​c_cpp_properties配置说明​​




配置tasks.json


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": [
{
"type": "shell",
"label": "build",
"command": "gcc",
"args": [
"-g",
"${file}",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe"
],
"problemMatcher": "$gcc",
"options": {
"cwd": "${workspaceFolder}"
},
"group": {
"kind": "build",
"isDefault": true
}
}
]
}

type: 任务类型。任务执行的是shell命令。

label: 任务名。launch.json调用就是使用这个名字,注意是大小写区分的。

command: 任务的执行命令,这是执行的是gcc。

args: 任务的参数。也就是执行命令所带的参数。也就是上述命令gcc所带的参数。

problemMatcher: 错误捕获,这里使用gcc捕获错误。

​​Tasks配置说明​​




配置launch.json


在vscode文件夹中新建一个launch.json,该文件是调试的入口文件。内容如下:

{
"version": "0.2.0",
"configurations": [
{
"name": "gcc.exe - Build and debug active file",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "D:/gcc/mingw64/bin/gdb.exe",
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "build"
}
]
}

name:调试的名称。

type:调试类型,除使用msvc进行调试外,均为该类型

request:可以选launch或attach。launch是指启动调试时同时开始执行程序;attcah是指程序已经在运行了,然后开始调试。

program: 指定C/C++程序位置。

cwd: 指定工作目录。

preLaunchTask:在启动调试前,预先执行的任务。

​​launch.json参考​​

4.3调试

直接按F5,进入调试界面。调试界面如下:

《软件工具》手把手教你使用Visual Studio Code开发C/C++(Windows)_Windows_18

界面左边可以看到变量窗口、调用堆栈等。窗口中间就是单步调试的各个按钮。这个就没啥好说的了,赶紧去玩起来吧。

除了使用Visual Studio Code自带的调试工具外,还可以使用MinGW的GDB调试,GDB也属于GNU项目的一部分,跟在Linux上调试是一样的。

GDB常用命令如表所示。

《软件工具》手把手教你使用Visual Studio Code开发C/C++(Windows)_Windows_19

首先使用gcc编译代码,需要加‘-g’参数,这里和在Linux中调试是一样的。

《软件工具》手把手教你使用Visual Studio Code开发C/C++(Windows)_VScode_20

在 gdb 中键入"l"(list)就可以查看所载入的文件,如下所示。

《软件工具》手把手教你使用Visual Studio Code开发C/C++(Windows)_VScode_21

关于GDB的使用请看笔者文章:

​​GDB使用​​

值得注意的是,使用MinGW的GDB调试时,使用powershell终端和Git bash都是一样的。

4.4多文件编译与调试

前文的工程都是单文件的,在实际工程中,都是会有很多文件,甚至有很多文件夹。

笔者这里新建main.c、fun.c和fun.h文件。文件内容分别如下。

【main.c】

/**
******************************************************************************
* @file main.c
* @author BruceOu
* @version V1.0
* @date 2021-09-06
* @blog https://blog.bruceou.cn/
* @Official Accounts 嵌入式实验楼
* @brief
******************************************************************************
*/
/**Include*********************************************************************/
#include "fun.h"

/**
* @brief main
* @param None
* @retval int
*/
int main()
{
int num = 100;

fun_print_int(num);

return 0;
}

【fun.c】

/**
******************************************************************************
* @file fun.c
* @author BruceOu
* @version V1.0
* @date 2021-09-06
* @blog https://blog.bruceou.cn/
* @Official Accounts 嵌入式实验楼
* @brief fun
******************************************************************************
*/
/**Include**********************************************************************/
#include "fun.h"

/**
* @brief print number
* @param num
* @retval None
*/
void fun_print_int(int num)
{
printf("fun print int: %d\n", num);
}

【fun.h】

#ifndef _FUN_H_
#define _FUN_H_

#include "stdio.h"

void fun_print_int(int num);

#endif

如果遇到多个文件,这就需要将main.c中包含的xxx.h文件和xxx.c源文件包含到GCC的编译参数中,也就是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": [
{
"type": "shell",
"label": "build",
"command": "gcc",
"args": [
"-g",
"${file}",
"${fileDirname}/fun.c",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe"
],
"problemMatcher": "$gcc",
"options": {
"cwd": "${workspaceFolder}"
},
"group": {
"kind": "build",
"isDefault": true
}
}
]
}

可以看到,相比当个文件,多个文件的配置也就是在args参数中添加相关的依赖文件。

接下来调试下。

《软件工具》手把手教你使用Visual Studio Code开发C/C++(Windows)_Windows_22

从调试结果来看,这是完全没有问题的。

但是如果有很多文件,换个其他环境,这种方式显然是不具有通用性的,这里就需要使用Makefile来管理工程文件。

【Makefile】

##编译工具
CC = gcc

##Windows平台删除需要用del
#使用powershell需要打开,使用Git Bash需要注释该语句
win = yes

TARGET = main
SOURCE = *.c

#
CPPFLAGS = -I.
CFLAGS = -g -Wall -o2

obj:
$(CC) $(CPPFLAGS) $(CFLAGS) -o $(TARGET) $(SOURCE)

## clean
clean:
ifdef win
del $(TARGET).exe
else
rm $(TARGET)
endif

.PHONY: clean

值得注意的是,如果想要powershell终端也能使用make,那么就需要配置make的环境变量。

《软件工具》手把手教你使用Visual Studio Code开发C/C++(Windows)_C/C++_23

要想使用Visual Studio Code调试,还需要修改tasks.json文件。

【tasks.json】

{
"version": "2.0.0",
"tasks": [
{
"type": "shell",
"label": "build",
"command": "make",
"args": [
"-j4"
],
"dependsOn":"clean"
},
{
"type": "shell",
"label": "clean",
"command": "make",
"args": [
"clean"
]
}
]
}

tasks.json新建了两个任务,一个是make任务,一个是clean任务,make任务依赖clean,在每次调试前需要清理前一次编译的结果,不然只有Git Bash能使用功能make。

《软件工具》手把手教你使用Visual Studio Code开发C/C++(Windows)_C/C++_24

同样能调试。

当然啦,还可以使用GDB调试。

《软件工具》手把手教你使用Visual Studio Code开发C/C++(Windows)_json_25

和使用Git Bash是一样的,只是这里使用的make编译的工程。

当然啦,这里也可以使用cmake来管理工程,有兴趣的可以去研究。



欢迎访问我的网站

BruceOu的哔哩哔哩

BruceOu的主页

BruceOu的博客

BruceOu的简书

BruceOu的知乎

欢迎订阅我的微信公众号

《软件工具》手把手教你使用Visual Studio Code开发C/C++(Windows)_Windows_26



举报

相关推荐

0 条评论