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