300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > vacode允许c_Visual Studio Code 配置C/C++环境

vacode允许c_Visual Studio Code 配置C/C++环境

时间:2023-09-11 13:54:04

相关推荐

vacode允许c_Visual Studio Code 配置C/C++环境

tasks.json代码:

reveal可根据自己喜好修改,即使设为never,也只是编译时不跳转到“终端”而已,手动点进去还是可以看到,我个人设为never。

命令行参数方面,-std根据自己的需要修改。如果使用Clang编写C语言,把command的值改成clang。

如果使用MinGW,编译C用gcc,编译c++用g++,并把-target和-fcolor那两条删去。如果不想要额外警告,把-Wall那一条删去。

参数的作用我加了注释,还看不懂,百度gcc使用教程。

1 // /docs/editor/tasks

2 {

3 "version": "2.0.0",

4 "tasks": [

5 {

6 "label": "Compile", // 任务名称,与launch.json的preLaunchTask相对应

7 "command": "clang++", // 要使用的编译器

8 "args": [

9 "${file}",

10 "-o", // 指定输出文件名,不加该参数则默认输出a.exe

11 "${fileDirname}/${fileBasenameNoExtension}.exe",

12 "-g", // 生成和调试有关的信息

13 "-Wall", // 开启额外警告

14 "-static-libgcc", // 静态链接

15 "-fcolor-diagnostics",

16 "--target=x86_64-w64-mingw", // 默认target为msvc,不加这一条就会找不到头文件

17 "-std=c++17" // C语言最新标准为c11,或根据自己的需要进行修改

18 ], // 编译命令参数

19 "type": "shell",

20 "group": {

21 "kind": "build",

22 "isDefault": true // 设为false可做到一个tasks.json配置多个编译指令,需要自己修改本文件,我这里不多提

23 },

24 "presentation": {

25 "echo": true,

26 "reveal": "always", // 在“终端”中显示编译信息的策略,可以为always,silent,never。具体参见VSC的文档

27 "focus": false, // 设为true后可以使执行task时焦点聚集在终端,但对编译c和c++来说,设为true没有意义

28 "panel": "shared" // 不同的文件的编译信息共享一个终端面板

29 }

30 // "problemMatcher":"$gcc" // 如果你不使用clang,去掉前面的注释符,并在上一条之后加个逗号。照着我的教程做的不需要改(也可以把这行删去)

31 }

32 ]

33 }

settings.json代码:

把这个文件里的东西放到“用户设置”里也可以覆盖全局设置,自己进行选择。

Code Runner的命令行和某些选项可以根据自己的需要在此处修改,用法还是参见此扩展的文档和百度gcc使用教程。

如果你要使用其他地方的头文件和库文件,可能要往clang.cflags和clang.cxxflags里加-I和-L,用法百度gcc使用教程。

clang的补全,在我过去的测试过程中会让VSC非常卡,但是现在好像没有这个问题了。

如果你卡,就把clang的补全关掉,用cpptools的。

Linux下去掉code runner和flags的--target那一条,共四个。

{

"files.defaultLanguage": "cpp", // ctrl+N新建文件后默认的语言

"editor.formatOnType": true, // 输入时就进行格式化,默认触发字符较少,分号可以触发

"editor.snippetSuggestions": "top", // snippets代码优先显示补全

"code-runner.runInTerminal": true, // 设置成false会在“输出”中输出,无法输入

"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++17 && $dir$fileNameWithoutExt"

}, // 设置code runner的命令行

"code-runner.saveFileBeforeRun": true, // run code前保存

"code-runner.preserveFocus": true, // 若为false,run code后光标会聚焦到终端上。如果需要频繁输入数据可设为false

"code-runner.clearPreviousOutput": false, // 每次run code前清空属于code runner的终端消息

"C_Cpp.clang_format_sortIncludes": true, // 格式化时调整include的顺序(按字母排序)

"C_Cpp.intelliSenseEngine": "Default", // 可以为Default或Tag Parser,后者较老,功能较简单。具体差别参考cpptools扩展文档

"C_Cpp.errorSquiggles": "Disabled", // 因为有clang的lint,所以关掉

"C_Cpp.autocomplete": "Disabled", // 因为有clang的补全,所以关掉

"clang.cflags": [ // 控制c语言静态检测的参数

"--target=x86_64-w64-mingw",

"-std=c11",

"-Wall"

],

"clang.cxxflags": [ // 控制c++静态检测时的参数

"--target=x86_64-w64-mingw",

"-std=c++17",

"-Wall"

],

"pletion.enable":true // 效果效果比cpptools要好

}

c_cpp_properties.json代码:

此文件内容来自于Microsoft/vscode-cpptools;这个json不允许有注释(其实按照标准本来就不能有)。

如果你没有合并Clang和MinGW,则该文件中的compilerPath必需修改成MinGW的完整路径,精确到gcc.exe,否则会提示找不到头文件;Linux下应该是/usr/bin/gcc。

如果你自己编写了头文件又不在workspaceFolder下,路径也要加到includePath和browse里。这些路径是否递归有效暂时未知,我的测试是有效的。

Windows下的路径为反斜杠,原本应使用两个反斜杠来转义,但直接用斜杠在VS Code中也接受。

{

"configurations": [

{

"name": "MinGW",

"intelliSenseMode": "clang-x64",

"compilerPath": "C:/Program Files/LLVM/bin/gcc.exe",

"includePath": [

"${workspaceFolder}"

],

"defines": [],

"browse": {

"path": [

"${workspaceFolder}"

],

"limitSymbolsToIncludedHeaders": true,

"databaseFilename": ""

},

"cStandard": "c11",

"cppStandard": "c++17"

}

],

"version": 4

}

为什么要往json里写这么多的东西?因为VSC本身并没有对C语言特别优待,对其他许多语言也是这样。另外稍微提一下,以$开头的是VSC预定义的变量,具体参见:Variables Reference。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。