LLVM+clang+VS Code 搭建C++编译环境(windows) | 您所在的位置:网站首页 › vscode停止运行快捷键 › LLVM+clang+VS Code 搭建C++编译环境(windows) |
环境准备 先下载好 vscode、llvm 以及 MinGW-W64。 下载并安装 VS Code下载 VS Code,链接Visual Studio Code,并安装。 下载并安装 LLVM下载 LLVM,链接 llvm,并安装。 说明:安装目录可根据自己的爱好,不过建议放在 D 盘下。 下载 MinGW-W64下载 MinGW-W64 GCC-8.1.0,链接 MinGW-W64。 下载后进行解压,如下图示: MinGW-W64 解压后,将 mingw64 文件夹中的所有文件拷贝到 LLVM 的安装目录下(D:\Program Files\LLVM)。 右键我的电脑,选择属性,进到下图界面。 点击上图的高级系统设置,进入下图界面。 点击上图的环境变量,进入下图界面。 点击上图的 path,进入下图界面。 点击上图的新建,如下图示。 将 LLVM 安装文件下的 bin 文件路径(D:\Program Files\LLVM\bin)拷贝,放到上图的红色框框中,如下图示,然后点击几个确定。 按住 win+R 输入cmd,输入 clang++ -v,查看显示是否如下图示。 当然也可以输入 g++ -v。 如下没有上图的显示,重启一下 pc,再试一下,就会有了。 至次,前期准备工作基本完成。 代码相关插件安装在 vscode 界面上,按住 Ctrl+Shift+X 或者直接点击下图位置,如下图示。 在扩展商店里面输入中文,并点击 Install 进行安装,如下图示。 重启软件之后,语言切换为中文了。 同样在扩展商店里面输入 C/C++ 和 clangd,并点击安装进行安装,如下图示。 在 pc 上新建一个文件夹,然后打开 vscode,点击左上角的文件,打开文件夹,选择我们新建的文件夹,如下图示。 点击上图蓝色框框,新建一个 test.cpp 文件,并随便输入一段代码(如下)并保存。 #include using namespace std; int main() { cout 选择调试器然后再选择下面框框中的,如下图示。 此时终端会输出运行结果,如下图示。 vscode 的左侧会多出一个 .vscode 文件夹,文件夹里面有 tasks.json 文件,还会生成一个 test.exe 文件,如下图示。 自动生成的 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,如下所示。 { // 使用 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。 此时再在 UI 界面的编译器路径下,选择 D:\Program Files\LLVM\bin\clang++.exe,如下图示。 然后再在 IntelliSense 模式中选择 clang-x64(legacy),如下图示。 C 和 C++ 标准,选择 C17 和 C++17,如下图示。 此时 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 即可。 此时会出现 1 中的问题,按照 1 中的方法去处理即可。 代码格式配置不进行代码格式配置的话,当前 vscode 代码格式如下图示。 从上图可以看出,函数中的代码是前置两个空格,跟习惯中的前置四个空格不一样,此时我们可以按照如下步骤进行修改。 1、安装插件 clang-format,如下图示。 2、右键点击 test.cpp,再点击下图框框中的。 3、进行 2 的操作后,打开了 test.cpp 的存放路径的窗口,再在路径栏输入 cmd 并回车。 4、在进入的 dos 界面中输入:clang-format -style="llvm" --dump-config > .clang-format 5、输入脚本回车之后,vscode 左侧会出现一个新的文件 .clang-format,如下图示。 6、修改 .clang-format 文件中的 IndentWidth 值为 4,并保存,如下图示。 7、此时再在 test.cpp 界面,右键,点击格式化文档,如下图示。 8、格式化之后 test.cpp 文件显示如下,此时文件中的函数中的每行首行代码变为四空格,由于此时还未保存文件,需要 Ctrl + S 保存一下。 9、修改 clang-format 执行的路径,操作如下图示,将 clang-format.exe 的路径 D:\Program Files\LLVM\bin\clang-format.exe 拷贝到下图标 3 的右下侧的红色框框中。 配置 settings.json 按下键盘 F1 或者按下 Ctrl+Shift+P 并在输入框中输入 settings.json,选择首选项:打开用户设置(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 Runner可以快捷地运行各类代码或代码片段,其安装方法跟上文安装中文、C/C++ 和 clangd 插件一样,安装完之后,如下图示,界面右侧有个三角形图标。 运行代码的方法 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 插件中的某些扩展设置,让代码在修改之后运行之前自动保存,如下图示,点击下图中的 1 和 2,然后再在 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 中会增加如下图示的脚本。 由于我们主要是针对 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" } }tabnine自动补全的编码插件,不同于一般的自动补全插件,它使用了深度学习来帮助我们补全代码。 其安装方法跟上文安装中文、C/C++ 和 clangd 以及 Code Runner 插件一样。 点击 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 实验室设备网 版权所有 |