《软件工具》手把手教你使用Visual Studio Code开发C/C++(Windows)
Posted Bruceoxl
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《软件工具》手把手教你使用Visual Studio Code开发C/C++(Windows)相关的知识,希望对你有一定的参考价值。
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 官网下载安装最新版。
安装很简单,这里就不在赘述了。
2.打开 VS Code,点击 “Extensions” 图标,搜索 C/C++ 插件(由 Microsoft 提供),点击安装。
如果有需要可以安装VS Code自带的编译器。
3.安装中文插件。
重启应用,Visual Studio Code就是中文界面了。
2 GCC编译工具
前面安装的Visual Studio Code只能说是一个代码编辑器,而编译代码需要编译器,Linux系统的编译器是GCC,而Windows的C/C++编译器是Microsoft Visual C++,那么要想在Windows也能GCC等一系列编译工具,就需要安装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工具链的一个编译工具。
进入下载页面。
【注】下载压缩包,不要下载离线安装的版本,而且安装难度较大,这里要选择非安装版本。
这就是压缩包,下载解压,直接配置下环境变量就可以使用。
然后在命令窗口中输入下面的命令验证安装是否成功:
#gcc -v
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-4.1-2-without-guile-w32-bin.zip 文件。
把该文件进行解压,把解压出来的文件全部拷贝的git的安装目录下:
C:\\Program Files\\Git\\mingw64
把文件夹进行合并,如果跳出来需要替换的文件要选择不替换。
这样在git bash窗口下就可以执行make了。
没有安装Git先安装Git工具。
4使用Visual Studio Code开发C/C++
4.1创建新的工程项目
选择一个文件夹,空白的即可。然后在VS Code中选择该文件夹即可。
最后创建的工程如下:
4.2配置工程
接下来就是配置工程。
配置settings.json
点击“在.vscode/settings.json中编辑",修改为自己安装git bash的路径:
"terminal.integrated.shell.windows": "C:\\\\Program Files\\\\Git\\\\bin\\\\bash.exe"
打开终端,就可以使用Bash了。
配置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默认只看本目录。
配置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捕获错误。
配置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:在启动调试前,预先执行的任务。
4.3调试
直接按F5,进入调试界面。调试界面如下:
界面左边可以看到变量窗口、调用堆栈等。窗口中间就是单步调试的各个按钮。这个就没啥好说的了,赶紧去玩起来吧。
除了使用Visual Studio Code自带的调试工具外,还可以使用MinGW的GDB调试,GDB也属于GNU项目的一部分,跟在Linux上调试是一样的。
GDB常用命令如表所示。
首先使用gcc编译代码,需要加‘-g’参数,这里和在Linux中调试是一样的。
在 gdb 中键入"l"(list)就可以查看所载入的文件,如下所示。
关于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参数中添加相关的依赖文件。
接下来调试下。
从调试结果来看,这是完全没有问题的。
但是如果有很多文件,换个其他环境,这种方式显然是不具有通用性的,这里就需要使用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调试,还需要修改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。
同样能调试。
当然啦,还可以使用GDB调试。
和使用Git Bash是一样的,只是这里使用的make编译的工程。
当然啦,这里也可以使用cmake来管理工程,有兴趣的可以去研究。
欢迎访问我的网站
BruceOu的哔哩哔哩
BruceOu的主页
BruceOu的博客
BruceOu的CSDN博客
BruceOu的简书
BruceOu的知乎
欢迎订阅我的微信公众号
以上是关于《软件工具》手把手教你使用Visual Studio Code开发C/C++(Windows)的主要内容,如果未能解决你的问题,请参考以下文章
软件测试 | 手把手教你如何使用 ABD调试工具,学不会算我的!
visual studio除了6还有哪个版本用得多而又不占内存?如何实现多visual studi