这里记录为 VScode 配置 C++ 环境的简单步骤,实践环境为 Ubuntu 18.04 ,VScode 1.27 。在 Ubuntu 环境下,系统默认安装 gcc 和 g++ 编译器,故而下列步骤均默认已有配置好的编译环境,后续的步骤在此基础上建立( 对于 Windows 而言,可能需要用户自行配置对应的 C/C++ 编译环境,如参考 C/C++ compiler and debugger )。
安装 VSCode 提供的 C++ 拓展
VSCode 本质上为一个编辑器,提供基础的文本编辑功能。想要使用 VSCode 进行特定语言如 C++ 程序的编译和调试时,需要为其安装对应的语言拓展( Extension ),从而让 VSCode 具备对应语言相关的语法检查、语法高亮等功能。VScode 提供多种方式进入拓展安装界面,进行特定拓展的安装。
1.直接点击界面左侧的第五个对应拓展( Extension )插件的按钮,或通过快捷键 Ctrl + Shift + x 进入拓展安装界面;
2.在搜索框中搜索关键字 "C++",并选择第一个 C++ 拓展安装即可( 下图是笔者在安装 Python 时的截图 );
进入拓展安装界面的方式还包括 a) 通过 Ctrl + Shift + p 打开 VScode 命令行,输入 Extension ,选择下拉菜单中的 Extension:Install Extensions 菜单,同样可以进入 2 中所示的界面;b) 点击界面左下角的齿轮按钮 -> Extensions 选项,可进入 2 中所示的界面;
通过上述步骤正确的安装 C++ 拓展工具之后,通过点击插件上的 reload 按钮或重启 VScode 使插件生效,VSCode 即可支持基本的 C++ 相关的特性。
( VSCode 拓展还提供包括主题格式、各式工具等,用户可以自行探索和使用 )
VSCode 打开目录
安装 C++ 拓展使得 VSCode 具备了基本的语法高亮和检查功能。为了在 VSCode 中可以进行程序的编译和调试,还需要进行编译和测试环境的配置。
使用 VSCode 打开文件夹的方式有两种:
1) 命令行方式进入源程序所在目录,通过命令 "code ." 在 VSCode 中打开上述源文件夹;
2) 在 VSCode 的图形界面中,直接通过 File -> Open Folder 选项,导航选择对应的文件目录并打开;
上述两种方式均会将新打开的目录视为工作区( workplace ),并在该目录下新建一个隐藏目录 .vscode 来记录对应的 vscode 相关的设置情况。在配置 C++ 环境时,与 C++ 程序的编译和调试相关的配置文件即位于上述 .vscode 目录中,以 json 文件的形式存在。下面对重要的三个 json 配置文件进行介绍。
VSCode 中进行 C++ 相关的编译和调试
c_cpp_properties.json
该文件用于指定一般的编译环境,包括头文件路径,编译器的路径等。通过 Ctrl + Shift + p d打开命令行,键入关键字 "C++",在下拉菜单中选择 "C/C++ Edit configuration",系统即自动在 .vscode 目录下创建 c_cpp_properties.json 文件,供用户进行编译方面的环境配置。默认的配置文件内容如下所示。
{ "configurations": [ { "name": "Linux", //环境名 "includePath": [ "${workspaceFolder}/**" //指定头文件路径,这里指定的是当前工作目录,如有需要在后面添加 ], "defines": [], "compilerPath": "/usr/bin/g++", //编译器的路径,可根据自己的安装情况进行设置 "cStandard": "c11", "cppStandard": "c++17", //设置使用的 C/C++ 标准 "intelliSenseMode": "clang-x64" } ], "version": 4 }
上述配置文件中键的值一般已默认生成,若在开发时有所变动,直接修改上述值即可。
build.json
该文件用于指定程序的编译规则,即如何将源文件编译为可执行程序。通过 Ctrl + Shift + p 打开命令行,键入关键字 "task",并在下拉菜单中选择 Tasks: Configure Default Build Task -> Create tassk.json file from template -> Others ,系统即自动在 .vscode 目录下创建 build.json 文件,供用户设置具体的编译规则。
注意此时仅生成了一个 task.json 的简化模板,修改里面的 label 键的值,再选中上述的 Tasks:Configure Default Build Task 选项,选中修改后的 label 名字,则 task.json 文件会发生改变,并被设置为默认编译对象,其大致格式如下所示。用户需要根据实际情况对其中的键值进行修改。
{ "version": "2.0.0", "tasks": [ { "label": "build hello world", //当前编译任务的名字 "type": "shell", "command": "g++", //编译时执行的程序 "args": ["-g", "-o", "helloworld", "helloworld.cpp"], //传递给 command 的参数 "group": { "kind": "build", "isDefault": true //为 True 时,用户可以通过 Ctrl+Shift+B 直接运行编译任务 } } ] }
上述文件中,通过 command 选项指定编译运行的程序,通过 args 选项给定了传递给编译程序的参数,当 isDefault 为 True 时(默认),用户使用 Ctrl+Shift+b 即可直接运行编译过程,或者也可以通过 Ctrl+Shift+p 打开命令行,选择 Tasks:Run Build Task 运行上述编译过程。
launch.json
该文件主要与程序的调试相关。用户可通过 Ctrl+Shift+p 打开命令行,键入关键字 "launch",选择 "Debug:Open launch.json" -> "C++(GDB/LLDB)",即可打开调试的配置文件 launch.json。在 VSCode 中,用户按 F5 即可进入调试模式,上述 launch.json 文件即设置在调试时的基本内容和要求。launch.json 文件的基本选项如下所示。
{ "version": "0.2.0", "configurations": [ { "name": "(gdb) Launch", "type": "cppdbg", "request": "launch", "program": "${workspaceFolder}/helloworld", //可执行文件的完整路径,文件名与 build.json 中保持一致 "args": [], "stopAtEntry": false, //是否在 main 函数处暂定执行 "cwd": "${workspaceFolder}", "environment": [], "externalConsole": true, //在新打开的终端而不是 VSCode 中运行 "MIMode": "gdb", "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true } ] } ] }
在上述文件配置好后,用户通过 F5 即可进入调试模式。
参考
Linux 下使用 VSCode 的编译和调试 : Using Mingw-w64 in VS Code
Debugging in Visual Studio Code
VScode 操作: Visual Studio Code的基本使用
VScode 配置 Python 环境
VScode 配置 Python 环境与 C++ 环境步骤相似。首先需要为 VSCode 安装相应的拓展,见前文 安装 VSCode 拓展 部分。
之后,为了能够顺利的运行 Python 程序,用户还需要选择合适的 Python 解释器( 要求系统上已经安装了 Python 解释器 )。用户可以通过 Ctrl + Shift + p 打开命令行,并输入命令 Python:Select Interpreter ,系统会列出当前系统已安装的解释器的信息,用户可以根据需要进行选择。
注意,上述对 Python 解释器的设置根据设置的环境不同作用效果也有所不同。若在设置 Python 解释器时用户并没有在 VScode 中打开项目文件夹,则此时是将选中的 Python 解释器设置为全局默认的解释器,即后续使用 VScode 打开的 Python 项目默认会使用该解释器。而用户若在特定的工作目录下选择该解释器,则后续该工作目录运行时即使用选中的解释器。
参考