VSCode配置C++环境
本篇主要面向Coding初学者,所以选择用Windows平台。
Linux平台上也类似,可根据已有的环境情况进行VS Code的配置,相信无论是对熟悉者,或是刚开始学习Linux用户来说,这都不会是一件难事。
下载安装VS Code
访问VS Code官网,下载并安装Windows stable版的User Installer。其他版本也可在此页面下载。安装时按自己的需求勾选相应选项。
工具包安装(MinGW)
Win-builds是一个很方便的包管理器,可以按需在上面下载相关的库和工具等。本次我们也用win-builds来准备所需的原材料 。——我原来是这么想的,直到我在process阶段卡了亿会儿。在吃完零食刷完微博看完新闻并思考了人生哲理和行业现状及展望后,我决定换种方式。
首先,下载MinGW(方便链接)。
我这里用了64位的mingw-w64的在线安装版,可能有同学会问,那么多种安装方式为什么选这种呢? 因为我写起来方便大家操作起来方便。
安装时,如果你是64位系统,则用"x86_64",否则选择"i686"。其他不变。
新建并选择一个空文件夹来放你的MinGW工具
又是漫长且熟悉的等待时间…但比win-builds要更快一些。进度条过半就可以迅速完成。
······1 HOUR LATER
MinGW安装完成后,你可以进入之前设置的安装目录,在$你的安装目录/mingw64/bin中看到各种我们需要的程序。
MinGW安装完成。
配置VS Code C++环境
进入下载好的VS Code,点击左边的Extensions(快捷键Ctrl+Shift+X),搜索并安装C++,完成VS Code的C++扩展安装。
准备工作完成后,终于到了Hello World的传统步骤了。
需要注意的是,如果你平时习惯于用Visual Studio这类一键build的IDE,本次的步骤会增加一些,但有助于你理解程序编译和运行的真实步骤。
第一步,打开VS Code下方的“Terminal(终端)”,输入命令“cd 你想要创建工程的目录”(举例来说,我的工程文件放在C盘的Code\VSCode_hello中,那么就输入cd C:/Code/VScode_hello
)
第二步,输入code .
这时会弹出一个新的窗口,这就是你写代码的场地,也就是Workspace。
运行测试代码
第三步,在跳出来的VS Code界面中,新建一个文件,保存文件为HelloWorld.cpp
输入下面的祖传代码:
#include<iostream>
int main(){
std::cout << "Hello World!" << std::endl;
return 0;
}
第四步,在你输入code .
命令的同样的位置,输入mkdir .vscode
新建一个目录(注意这个目录名不要去改它,并且前面有个“.”号,别漏啦)。
在这个新建的 .vscode 目录中,新建一个文件tasks.json,并输入下面代码:
需要修改的地方只有2处(注意反斜杠是两条):
command,后面切换成你的MinGW中的bin目录下的g++.exe (没错,这个g++文件,正是我们之前下载MinGW工具包的最重要的目的)
options的cwd,切换成你的MinGW中的bin目录
tasks.json文件中的内容:
{
"version": "2.0.0",
"tasks": [
{
"type": "shell",
"label": "g++.exe build active file",
"command": "C:\\Tools\\MinGW-W64\\mingw64\\bin\\g++.exe",
"args": ["-g", "${file}", "-o", "${fileDirname}\\${fileBasenameNoExtension}.exe"],
"options": {
"cwd": "C:\\Tools\\MinGW-W64\\mingw64\\bin"
},
"problemMatcher": ["$gcc"],
"group": {
"kind": "build",
"isDefault": true
}
}
]
}
值得注意的是,我在Linux上跳过了tasks.json这个文件的创建,发现直接进行Run Build Task - C/C++ g++ build active file的话,VSCode也可以编译出这个可执行文件,原因是它本身就带有一套tasks.json的默认配置,如果你打开他的配置文件,其实也是一个相同格式的tasks.json。
第五步,编译。点击VS Code上方的Terminal - Run Build Task(快捷键Ctrl+Shift+B)。
如果你看到了终端显示如下信息,表示你成功生成了可执行文件HelloWorld.exe:
这终端print出的内容看上去是不是有点眼熟?它是tasks.json文件中的,args参数。我们写的tasks.json文件,实际上就是告诉IDE,我们希望怎样来build代码。tasks.json在我用linux测试时,你甚至可以跳过这一步直接进行Run Build Task 步骤,它会自动生成(Windows下是不是也是这样呢,大家可以自己尝试一下)。从本质上来说,tasks.json的目的,就是让你可以按自己的实际需求,“定制”出你想要的编译参数,然后IDE帮助你运行了组装完成后的build命令,所有的IDE实际上都是通过类似的办法来完成编译任务的。
第六步,运行。
点击TERMINAL右侧的“+”号,创建一个新的终端窗口。
你可以自由切换这些窗口。
输入命令./HelloWorld.exe
至此,整个步骤完成。更多操作建议参考VS Code官方文档。
参考资料
顺便一提,在我写完本文后,win-builds依然还没下载完…
进阶之launch.json
其实,与tasks.json类似的配置文件,还有2个,其中一个就是管理Debug配置的文件:launch.json
该文件同样应放在.vscode目录下。先把我自己环境下的launch.json的代码放在这里:大家按需更改自己的gdb.exe(Debug工具)的路径,以及其他的一些参数配置即可。
{
"version": "0.2.0",
"configurations": [
{
"name": "g++.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": "C:\\Tools\\MinGW-W64\\mingw64\\bin\\gdb.exe",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "g++.exe build active file"
}
]
}
放这个的原因,一是为了说明,IDE中做的这些工作都是可以由我们手动设置和控制的;二是因为——
这样你就可以像其他IDE一样按键运行/Debug程序啦,是不是很友好呢。
在配置完launch.json文件后,Run - Start Debugging(F5)或 Run - Run Without Debugging(Ctrl+F5)吧。
进阶之c_cpp_properties.json
有些教程中会认为这三个json文件都是必要的,其实并非如此。这三个文件的目的是减轻我们手动输入命令进行编译、运行、Debug等工作的劳动量,也就是“偷懒”。如果你需要一个特定的、更细化的C/C++参数控制的话,c_cpp_properties.json文件可以帮你偷懒。
c_cpp_properties.json的文件模板如下:这里我直接从官网上搬运了代码 虽然这一小节想教大家偷懒的精髓,但作者也不应该自己偷懒吧 ,大家应该能猜到里面这些字符串的含义,举个例子来说,如果你想把C++标准改到C++11,就应该把下面的“c++17”改为“c++11”。
{
"configurations": [
{
"name": "Win32",
"includePath": ["${workspaceFolder}/**"],
"defines": ["_DEBUG", "UNICODE", "_UNICODE"],
"compilerPath": "C:\\mingw-w64\\i686-8.1.0-posix-dwarf-rt_v6-rev0\\mingw32\\bin\\gcc.exe",
"cStandard": "c11",
"cppStandard": "c++17",
"intelliSenseMode": "clang-x86"
}
],
"version": 4
}
那么VSCode,以及一些编译的小原理就讲解到这儿啦,欢迎大家在评论中交流在使用过程中遇到的疑难问题。