LLVM+clang+VS Code 搭建C++编译环境(windows) 您所在的位置:网站首页 vscode停止运行快捷键 LLVM+clang+VS Code 搭建C++编译环境(windows)

LLVM+clang+VS Code 搭建C++编译环境(windows)

#LLVM+clang+VS Code 搭建C++编译环境(windows)| 来源: 网络整理| 查看: 265

环境准备

先下载好 vscodellvm 以及 MinGW-W64

下载并安装 VS Code

下载 VS Code,链接Visual Studio Code,并安装。

下载并安装 LLVM

下载 LLVM,链接 llvm,并安装。

llvm 下载llvm 安装安装位置选择

说明:安装目录可根据自己的爱好,不过建议放在 D 盘下。

下载 MinGW-W64

下载 MinGW-W64 GCC-8.1.0,链接 MinGW-W64。

MinGW-W64 下载

下载后进行解压,如下图示:

解压MinGW-W64环境变量相关MinGW-W64 存放位置

MinGW-W64 解压后,将 mingw64 文件夹中的所有文件拷贝到 LLVM 的安装目录下(D:\Program Files\LLVM)。

拷贝mingw64文件夹中的所有文件将mingw64中的所有文件拷贝到该目录下合并之后添加环境变量

右键我的电脑,选择属性,进到下图界面。

系统设置

点击上图的高级系统设置,进入下图界面。

环境变量

点击上图的环境变量,进入下图界面。

系统变量

点击上图的 path,进入下图界面。

编辑环境变量

点击上图的新建,如下图示。

增加环境变量

LLVM 安装文件下的 bin 文件路径(D:\Program Files\LLVM\bin)拷贝,放到上图的红色框框中,如下图示,然后点击几个确定。

编辑环境变量环境变量是否生效

按住 win+R 输入cmd,输入 clang++ -v,查看显示是否如下图示。

查看clang是否生效

当然也可以输入 g++ -v

查看g++是否生效

如下没有上图的显示,重启一下 pc,再试一下,就会有了。

至次,前期准备工作基本完成。

代码相关插件安装

在 vscode 界面上,按住 Ctrl+Shift+X 或者直接点击下图位置,如下图示。

扩展商店的位置

在扩展商店里面输入中文,并点击 Install 进行安装,如下图示。

安装中文插件

重启软件之后,语言切换为中文了。

同样在扩展商店里面输入 C/C++ clangd,并点击安装进行安装,如下图示。

安装C/C++插件安装clangd插件代码编辑

在 pc 上新建一个文件夹,然后打开 vscode,点击左上角的文件打开文件夹,选择我们新建的文件夹,如下图示。

vscode 打开文件夹

点击上图蓝色框框,新建一个 test.cpp 文件,并随便输入一段代码(如下)并保存。

#include using namespace std; int main() { cout 选择调试器

然后再选择下面框框中的,如下图示。

选择配置

此时终端会输出运行结果,如下图示。

运行结果

vscode 的左侧会多出一个 .vscode 文件夹,文件夹里面有 tasks.json 文件,还会生成一个 test.exe 文件,如下图示。

生成tasks.json

自动生成的 tasks.json 如下:

{ "tasks": [ { "type": "cppbuild", "label": "C/C++: g++.exe 生成活动文件", "command": "D:\\Program Files\\LLVM\\bin\\g++.exe", "args": [ "-fdiagnostics-color=always", "-g", "${file}", "-o", "${fileDirname}\\${fileBasenameNoExtension}.exe" ], "options": { "cwd": "${fileDirname}" }, "problemMatcher": [ "$gcc" ], "group": { "kind": "build", "isDefault": true }, "detail": "调试器生成的任务。" } ], "version": "2.0.0" }

再点击下图中的 1,然后再点击 2,创建 launch.json,如下图示。

创建launch.json

修改 launch.json,如下所示。

{ // 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。 // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "name": "(gdb) Launch",// 配置名称,将会在启动配置的下拉菜单中显示 "type": "cppdbg",//配置类型,只能为cppdbg "request": "launch",//请求配置类型,可以为launch(启动)或attach(附加) "program": "${fileDirname}\\${fileBasenameNoExtension}.exe",//调试程序的路径名称 "args": [],//调试传递参数 "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [], "externalConsole": true,//true显示外置的控制台窗口,false显示内置终端 "internalConsoleOptions": "neverOpen", "MIMode": "gdb", "miDebuggerPath": "D:\\Program Files\\LLVM\\bin\\gdb.exe", "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": false } ], "preLaunchTask": "C/C++: clang++.exe 生成活动文件" } ] }

再将 tasks.json 修改如下。

{ "version": "2.0.0", "tasks": [ { "type": "cppbuild", "label": "C/C++: clang++.exe 生成活动文件", "command": "D:\\Program Files\\LLVM\\bin\\clang++.exe", "args": [ "-fcolor-diagnostics", "-fansi-escape-codes", "-g", // 生成和调试有关的信息 "${file}", "-o", // 指定输出文件名,不加该参数则默认输出a.exe "${fileDirname}\\${fileBasenameNoExtension}.exe", "--target=x86_64-w64-mingw", "-Wall", // 开启额外警告 "-static-libgcc", // 静态链接libgcc,一般都会加上 "-std=c++1z" // c++1z即c++17,C语言最新标准为c11,或根据自己的需要进行修改 ], "options": { "cwd": "${fileDirname}" }, "group": { "kind": "build", "isDefault": true }, "problemMatcher": { "owner": "cpp", "fileLocation": [ "relative", "/" ], "pattern": { "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$", "file": 1, "line": 2, "column": 3, "severity": 4, "message": 5 } }, "detail": "编译器: \"D:\\Program Files\\LLVM\\bin\\clang++.exe\"" } ] }

注意点

tasks.json 中的 label 必须与 launch.json 中的 preLaunchTask 保持一致

此时,再修改 test.cpp 成如下代码。

#include using namespace std; int main() { cout 运行结果配置 c_cpp_properties.json

在 vscode 界面上,按住 Ctrl+Shift+P,在跳出的输入框中输入 C/C++,点击下图框框中的,就可生成 c_cpp_properties.json

生成 c_cpp_properties.json

此时再在 UI 界面的编译器路径下,选择 D:\Program Files\LLVM\bin\clang++.exe,如下图示。

选择编译器路径

然后再在 IntelliSense 模式中选择 clang-x64(legacy),如下图示。

选择 IntelliSense 模式

C C++ 标准,选择 C17C++17,如下图示。

c/c++ 标准

此时 c_cpp_properties.json 文件中的内容如下:

{ "configurations": [ { "name": "Win32", "includePath": [ "${workspaceFolder}/**" ], "defines": [ "_DEBUG", "UNICODE", "_UNICODE" ], "windowsSdkVersion": "10.0.17763.0", "compilerPath": "D:/Program Files/LLVM/bin/clang++.exe", "cStandard": "c17", "cppStandard": "c++17", "intelliSenseMode": "clang-x64" } ], "version": 4 }

由于我们在用 vscode 编写代码的时候,头文件下面可能会出现红色波浪线。此时我们需要在 c_cpp_properties.json 中的 includePath 中添加需要的头文件的路径,至于这些路径具体是哪些,可以在命令行中输入 gcc -v -E -x c++ - 去查看,具体如下图示。

头文件的路径

此时,我们在 c_cpp_properties.json 中的 includePath 中,添加上图中蓝色框中的内容即可,如下图示。

添加头文件路径

注意点

1、同时安装了 C/C++clangd 插件后,由于这两个插件都有代码自动补全或者提示功能,所以需要 disable 其中一个,如下图示,可以直接点击 Disable IntelliSense

解决冲突

2、虽然上面的操作,可以解决冲突,但这会带来另外一个问题,如果需要修改 UI 中一些配置或者 json 文件,通过 Ctrl+Shift+P 的方式,再在输入栏中输入,操作后会出现失败的情况,具体如下图示。

修改配置

3、随便点击上图中框框中下面的任何一个,会出现失败的情况,如下图示。

失败提示

4、此时,需要进行如下操作,点击下图中的 1,然后点击 2,然后再输入 intelli,将框框中的 diabled 下拉选择 default 即可。

修改C/C++扩展的设置具体修改位置

此时会出现 1 中的问题,按照 1 中的方法去处理即可。

代码格式配置

不进行代码格式配置的话,当前 vscode 代码格式如下图示。

当前 vscode 代码格式

从上图可以看出,函数中的代码是前置两个空格,跟习惯中的前置四个空格不一样,此时我们可以按照如下步骤进行修改。

1、安装插件 clang-format,如下图示。

安装 clang-format

2、右键点击 test.cpp,再点击下图框框中的

打开文件存放路径

3、进行 2 的操作后,打开了 test.cpp 的存放路径的窗口,再在路径栏输入 cmd 并回车

进入存放路径进入 dos 界面

4、在进入的 dos 界面中输入:clang-format -style="llvm" --dump-config > .clang-format

dos 界面输入脚本

5、输入脚本回车之后,vscode 左侧会出现一个新的文件 .clang-format,如下图示。

生成 .clang-format

6、修改 .clang-format 文件中的 IndentWidth 值为 4,并保存,如下图示。

修改 .clang-format 配置项

7、此时再在 test.cpp 界面,右键点击格式化文档,如下图示。

格式化

8、格式化之后 test.cpp 文件显示如下,此时文件中的函数中的每行首行代码变为四空格,由于此时还未保存文件,需要 Ctrl + S 保存一下。

格式化后显示

9、修改 clang-format 执行的路径,操作如下图示,将 clang-format.exe 的路径 D:\Program Files\LLVM\bin\clang-format.exe 拷贝到下图标 3 的右下侧的红色框框中。

设置 clang-format 的可执行路径

配置 settings.json

按下键盘 F1 或者按下 Ctrl+Shift+P 并在输入框中输入 settings.json,选择首选项:打开用户设置(JSON),此时进入 settings.json 文件,如下图示。

打开 settings.json 文件

由于在前面安装了 clang-format 、将其设置成默认格式并设置了其可执行的路径,以及将 Intelli Sense Engine 设置成了 disabled,因此当前的 settings.json 包含了这三项,如下图示。

settings.json

{ "workbench.colorTheme": "Default Dark+", "C_Cpp.intelliSenseEngine": "disabled", "[cpp]": { "editor.defaultFormatter": "xaver.clang-format" }, "clang-format.executable": "D:\\Program Files\\LLVM\\bin\\clang-format.exe" }

下文会继续修改 settings.json 。

好用的插件推荐Code RunnerCode Runner 插件

可以快捷地运行各类代码或代码片段,其安装方法跟上文安装中文、C/C++ 和 clangd 插件一样,安装完之后,如下图示,界面右侧有个三角形图标

安装 Code Runner 后显示

运行代码的方法

1、直接点击上图的三角形来运行代码,如下图示。

通过点击右侧三角形运行代码

2、在 test.cpp 界面中的代码编辑区,单击鼠标右键,选择 Run Code 来运行代码,如下图示。

单击右键,运行代码

3、在左侧的文件管理器中右键点击 test.cpp 选择 Run Code,如下图示

文件管理器中运行代码

4、按下键盘 F1 或者按下 Ctrl+Shift+P 并在输入框中输入 Run Code,或者直接按快捷键 Ctrl+Alt+N 来运行代码,如下图示。

快捷键运行代码

停止代码运行的方法

1、点击界面右侧的小正方形,如下图示。

点击小正方形停止运行代码

2、在下方的输出框鼠标右键单击,选择 Stop Code Run,如下图示。

输出框右键结束代码运行

3、按下键盘 F1 或者按下 Ctrl+Shift+P 并在输入框中输入 Stop Code Run ,或者直接按快捷键 Ctrl+Alt+M 来结束正在运行代码,如下图示。

快捷键结束代码运行

修改代码后自动保存

可以通过修改 Code Runner 插件中的某些扩展设置,让代码在修改之后运行之前自动保存,如下图示,点击下图中的 12,然后再在 3 中输入 save,此时再在 4 中,根据需要打勾,可以都勾上。

代码修改,运行前自动保存

此时的 settings.json 变为如下:

{ "workbench.colorTheme": "Default Dark+", "C_Cpp.intelliSenseEngine": "disabled", "[cpp]": { "editor.defaultFormatter": "xaver.clang-format" }, "clang-format.executable": "D:\\Program Files\\LLVM\\bin\\clang-format.exe", "code-runner.saveAllFilesBeforeRun": true, "code-runner.saveFileBeforeRun": true }

代码在终端运行

由于 vscode 内置了终端,因此可以通过修改 Code Runner 插件中的某些扩展设置,让代码在终端中运行,修改方法如下图示,在下图中 4 后面的方框点击一下

让代码在终端运行

运行如下图示,并且中文不出现乱码。

代码在终端中运行

此时的 settings.json 变为如下:

{ "workbench.colorTheme": "Default Dark+", "C_Cpp.intelliSenseEngine": "disabled", "[cpp]": { "editor.defaultFormatter": "xaver.clang-format" }, "clang-format.executable": "D:\\Program Files\\LLVM\\bin\\clang-format.exe", "code-runner.saveAllFilesBeforeRun": true, "code-runner.saveFileBeforeRun": true, "code-runner.runInTerminal": true }

修改对编译的设置

通过修改 Code Runner 插件中的 executorMap 选项,可以修改编译选项,如下图示,点击下图中的 4 左侧的框框

修改编译选项

此时 settings.json 中会增加如下图示的脚本。

settings.json 变化

由于我们主要是针对 C++ 代码,因此需要修改如下脚本:

"cpp": "cd $dir && g++ $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",

修改之后变成如下,因为采用的 clang++ 而不是 g++,所以改为 clang++,并增加了编译选项。

"cpp": "cd $dir && clang++ $fileName -o $fileNameWithoutExt.exe -Wall -g -Og -static-libgcc -fcolor-diagnostics --target=x86_64-w64-mingw -std=c++1z && $dir$fileNameWithoutExt"

此时再点击 test.cpp 界面右侧有个三角形图标,编译结果如下:

更改编译选项之后的编译结果

由于当前只使用 C/C++ 编译代码,因此将 code-runner.executorMap 中其它部分删除,此时的 settings.json 变成如下所示:

{ "workbench.colorTheme": "Default Dark+", "C_Cpp.intelliSenseEngine": "disabled", "[cpp]": { "editor.defaultFormatter": "xaver.clang-format" }, "clang-format.executable": "D:\\Program Files\\LLVM\\bin\\clang-format.exe", "code-runner.saveAllFilesBeforeRun": true, "code-runner.saveFileBeforeRun": true, "code-runner.runInTerminal": true, "code-runner.executorMap": { "c": "cd $dir && clang $fileName -o $fileNameWithoutExt.exe -Wall -g -Og -static-libgcc -fcolor-diagnostics --target=x86_64-w64-mingw -std=c11 && $dir$fileNameWithoutExt", "cpp": "cd $dir && clang++ $fileName -o $fileNameWithoutExt.exe -Wall -g -Og -static-libgcc -fcolor-diagnostics --target=x86_64-w64-mingw -std=c++1z && $dir$fileNameWithoutExt" } }tabninetabnine 插件

自动补全的编码插件,不同于一般的自动补全插件,它使用了深度学习来帮助我们补全代码。

其安装方法跟上文安装中文、C/C++ 和 clangd 以及 Code Runner 插件一样。

tabnine 插件自动补全代码一些好的设置保存时自动格式化

点击 vscode 界面左上角的文件,然后选择首选项,再点击设置,如下图示。

打开设置

然后输入 editor.formatOnSave,再在下图中的正方形中打勾,如下图示。

保存时格式化文件

效果,修改文件后,按 Ctrl + S 保存时,自动格式化文件,如下图示

保存前保存后自动格式化

此时 settings.json 变为如下:

{ "workbench.colorTheme": "Default Dark+", "C_Cpp.intelliSenseEngine": "disabled", "[cpp]": { "editor.defaultFormatter": "xaver.clang-format" }, "clang-format.executable": "D:\\Program Files\\LLVM\\bin\\clang-format.exe", "code-runner.saveAllFilesBeforeRun": true, "code-runner.saveFileBeforeRun": true, "code-runner.runInTerminal": true, "code-runner.executorMap": { "c": "cd $dir && clang $fileName -o $fileNameWithoutExt.exe -Wall -g -Og -static-libgcc -fcolor-diagnostics --target=x86_64-w64-mingw -std=c11 && $dir$fileNameWithoutExt", "cpp": "cd $dir && clang++ $fileName -o $fileNameWithoutExt.exe -Wall -g -Og -static-libgcc -fcolor-diagnostics --target=x86_64-w64-mingw -std=c++1z && $dir$fileNameWithoutExt" }, "tabnine.experimentalAutoImports": true, "editor.formatOnSave": true }



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有