VScode 全称:Visual Studio Code
是一种代码编辑器,并不是一种IDE
以下配置都是基于Windows系统而成,对于Mac以及Linux建议参考官方文档……(其实是我不会太菜辽呜呜呜~)
作为主写C++的我 自然要对其进行一番配置 主要配置内容以及过程如下
配置电脑C++编译运行环境
推荐MinGw 作为Windows上的主流C++编译器。
MinGW可以下载Online Installer然后选择对应的版本号进行安装,在这里可以选择8.1.0, posix和seh。对于不同版本的对比可以参考这篇StackOverflow。
安装完成后将MinGW安装目录/bin文件夹(例如D:\mingw64\bin)加入环境变量,具体可以参考这篇文档。加入环境变量后重新开启一个命令行然后输入g++ --version就可以看到安装好的MinGW的版本号了。
安装并配置C++插件
在vscode的插件商店中 选择C/C++ for Visual Studio Code插件以及code run插件等。
配置IntelliSence
建立一个写代码的文件夹 建议在二级目录下,在VS Code中打开,然后在VS Code中按Ctrl + Shift + P输入命令C/C++: Edit Configurations...,VS Code会自动在项目文件夹根目录新建配置文件夹.vscode并同时在.vscode中新建配置文件c_cpp_properties.json
1 | { |
然后介绍其中重要的部分:
c_cpp_properties.json中共包含三部分:
env:可以在这里定义用户变量,在下面的configuration中可以使用这里定义的变量来代替多次重复出现的地址等配置。
configurations:在这里配置IntelliSence选项。每一个选项都会有默认值。
version:指c_cpp_properties.json的版本,这里不需要作修改。
configurations中包含以下配置项:
name:配置文件名称,在这里如果根据系统填”Linux”, “Mac”或者”Win32”,那么插件会自动根据这里填写的系统名称来读取默认值。在VS Code的状态栏中会显示这一配置名称。通过点击状态栏中的名称可以更换配置。在这里我们指定为Win32。
intelliSenseMode:如果插件设置中C_Cpp.intelliSenseEngine设置为”default”的话,这里可以指定IntelliSence的模式。msvc-x64对应Visual Studio模式,clang-x64对应Clang模式,gcc-x64对应GCC模式。Windows默认使用msvc-x64,macOS默认使用clang-x64,Linux默认使用gcc-x64,在这里由于我们用的是GCC,因此修改为gcc-x64。
includePath:指定IntelliSence在目录中搜索源文件所包含(#include)的头文件。这与在命令行中调用编译器时用-I选项指定的路径是一样的。如果路径末尾是/**的话IntelliSence会自动加载所有的子目录。如果是Windows系统并且安装了Visual Studio 的C++功能,或者配置了compilePath,这里可以不做配置。
macFramePath:同上,指定macOS框架的头文件目录地址。
defines:这里可以指定在编译过程中所调用的预处理符号的内容,与命令行调用编译器时-D选项指定的内容是一样的。如果是Windows系统并且安装了Visual Studio 的C++功能,或者配置了compilePath,这里可以不做配置。
forceInclude:(可选)强制加载的头文件,优先于源文件中指定的头文件,按照配置文件里的顺序加载,这里不需要配置。
compilerPath :(可选)编译器的绝对路径。插件会根据编译器决定includePath和default define的值。可以在路径后附加选项,例如-nostdinc++, -m32, -fno-ms-extensions等等。如果选项有空格需要用双引号(“)括起来。这里需要找到刚才安装的MinGW中gcc.exe的位置,例如C:/Dev/MinGW/mingw64/bin/gcc.exe。
cStandard:C的标准,这里填c11。
cppStadard:C++的标准,这里填cpp17。
参考资料:https://code.visualstudio.com/docs/cpp/c-cpp-properties-schema-reference
配置编译选项
VS Code通过Tasks来执行编译和运行操作。在.vscode文件夹中新建文件tasks.json进行配置。或者以上以下操作都可以先写一个C++文件然后运行修改即可
1 | { |
然后介绍其中重要的部分:
label:任务标签。
type:任务类型,一般指定为shell或process。当设置为shell时会将命令看作终端操作,包括bash、cmd或PowerShell。当指定为process时会将命令看作是一个进程。这里选择shell。
command:命令内容,这里指定编译器的路径,比如g++的路径C:/Dev/MinGW/mingw64/bin/g++.exe。
args:命令的参数列表。
windows:Windows特定的配置属性,例如macOS和Linux上指定编译的输出文件为.o,而Windows下指定编译的输出文件为.exe。
group:指定任务的分组归属。例如指定group为test,那么可以通过命令面板的Run Test Task运行该任务。
presentation:指定如何在界面上显示任务输出。
reveal:在执行任务时是否显示内置的终端面板,可选的值包括:always:始终显示;never:从不显示;silent:只在不扫描错误和警告时显示。默认值为always。
focus:终端是否在输入时激活。默认值为false。
echo:是否将执行的命令输出到终端中。默认值为true。
showReuseMessage:是否显示”终端将被任务重用,按任意键关闭。“这一消息。
panel:控制是否在各任务间共享终端输出。
shared:共享终端,所有任务的输出都会在同一个终端内显示。
dedicated:每一个任务都有自己的输出终端,但是对于同一个任务来说,如果被重复执行的话仍会在同一个终端内显示。
new:无论是否是同一个任务都会打开一个新的输出终端。
clear:在任务执行之前是否清空输出终端,默认值为false。
group:指定任务输出的分组,同一个分组的任务会共享终端而非开启新终端。
problemMatcher:将编译器输出的错误映射至VS Code的问题面板。具体可以参考Defining a problem matcher。
配置Debug选项
如果要启用Debug,需要在.vscode文件夹下创建launch.json
1 | { |
然后介绍其中重要的部分:
program:(必填项)指定Debugger程序路径,在这里修改成本机gdb.exe的路径。
symbolSearchPath:指定符号文件的路径。
externalConsole:在Windows中,设置为true调用外部终端,设置为false调用VS Code集成终端;在Linux中,设置为true调用会通知VS Code启动外部终端,设置为false会调用VS Code集成终端;在macOS中,设置为true会通过lldb-mi调用外部终端,设置为false会在Debug面板中显示输出。
args:参数列表。
cwd:终端启动时所在的路径。
environment:环境变量。
MIMode:指定VS Code连接的Debugger的类型,必须是gdb或者lldb中一种。
miDebuggerPath:Debugger路径。如果没有指定完整路径,VS Code会搜索系统变量PATH。
miDebuggerArgs:传递给Debugger的参数列表。
stopAtEntry:是否在程序入口暂停。默认值为false。
type:指定Debugger类型,对于Visual Studio Windows debugger需要指定为cppvsdbg,对于GDB或者LLDB需要指定为cppdbg.
参考资料:https://code.visualstudio.com/docs/cpp/launch-json-reference
设置代码格式化
这一部分我没有具体配置 可参考:
在VS Code里可以通过Shift + ALt + F对整篇代码进行格式化,或者选中一段代码通过Ctrl + K Ctrl + F来进行段落的格式化。也可以在设置中设置editor.formatOnSave设定在保存时自动格式化或editor.formatOnType设定在输入时自动格式化。默认VS Code调用Clang Format对代码进行格式化,因此在项目文件夹下新建.clang-format文件来指定格式化样式。由于Clang Format可以设置的项目非常多,因此这里只举例说明:
1 | UseTab: false |
然后介绍其中重要的部分:
UseTab:用Tab或空格控制缩进。
IndentWidth:缩进长度。
BreakBeforeBraces:在括号前是否换行。
AllowShortIfStatementsOnASingleLine:是否将 if (a) return;放在同一行。
IndentCaseLabels:对于switch语句,case是否缩进。
ColumnLimit:限制一行的长度。
Standard:cpp标准,Cpp03会适应C++03标准,cpp11会适应C++11、C++14和C++17标准。例如, C++03标准的A<A<int> >会被替换为C++11标准的A<A<int>>。
Cpp11BracedListStyle:使用C++11的列表格式
后续
完成以上步骤以后你会得到一个.vscode文件夹(包含三个配置文件)以及.clang-format文件。之后再新建项目时直接将这个文件夹复制过去即可。
打开一个.cpp文件然后按F5即可启动调试。按Ctrl + Shift + P然后输入Run Build Task即可编译。输入Run Test Task即可运行。在设置中可以为这两个选项添加快捷键绑定。按Ctrl + Shift + F可以格式化代码。
以上。
参考资料
C/C++ for Visual Studio Code (Preview)
c_cpp_properties.jsonReference Guide
Configuring launch.json for C/C++ debugging