毕业后终于有了一点空闲时间,可以来继续倒腾倒腾自己的电脑了。自然想起了微软大爷的一堆东西,便想先搞搞VSCode试试。
事出有因,作为一个编程小白,以前写程序都是用微软各版本的航母VisualStudio,虽说性能分析、语法纠错什么的蛮好用,但还是想再试着配置一下轻量级的编辑器,以为能加深自己对程序实现过程的理解吧。年少无知的时候折腾过Vim、Emacs、Atom、Editplus,但都不很如意。一方面是没有坚持下来长时间写程序,导致没有形成自己的习惯;另一方面也是因为平时更经常看用MATLAB,对编程的理解始终感觉不到位。
查到很多个配置方案并一个一个试过后,终于实现了用VSCode写程序的第一步。开始折腾!
关于编译器,据说:
1. 可以选择LLVM、MinGW64、Tdm-gcc等主流编译环境的其中一个。其中LLVM前端(词法、语法分析、语义分析、生成中间代码)使用的是clang,效率上优于后面三个所使用的gcc。(2018.3.)
2. 在 Windows 下安装 Clang 是一件不太愉快的事情,如果在安装时遇到困难,大可放弃安装 Clang ,转而安装 GCC。(2017.8.)
作为小白,尽管看了些讲LLVM和GCC区别的文章,但是并不能很好地体会到两者的区别。也看到很多配置里,将intelliSenseMode改为clang-x64,但是其command设置是g++,仿佛是将LLVM和MinGW64混合起来了一样。暂时没有搞懂,详情再看。
另外我发现,截止目前的LLVM已经将clang更新到6.0.0版本,对于Windows来说安装已经非常友好了。加上本来就安装好的MinGW64,我也打算把这两个都搞出来得了!
**\LLVM\bin
和**\MinGW64\bin
这两个。个人感觉安装包似乎好管理一些。C/C++
。C/C++ Clang Command Adapter
、VSCode Great Icons
等。 {
"configurations": [
{
"name": "Win32",
"intelliSenseMode": "clang-x64",
// 此处设置包含系统环境路径
"includePath": [
"/usr/include",
"/usr/local/include",
"${workspaceFolder}"
],
"defines": [
"_DEBUG",
"UNICODE",
"__GNUC__=7",
"__cdecl=__attribute__((__cdecl__))"
],
"browse": {
"path": [
"/usr/include",
"/usr/local/include",
"${workspaceFolder}"
]
},
"limitSymbolsToIncludedHeaders": true,
"databaseFilename": "",
// 此处设置编译器路径,应将其更改为自己的g++.exe所在路径
"compilerPath": "E:/Environment/MinGW64/bin/g++.exe",
"cStandard": "c11",
"cppStandard": "c++17"
}
],
"version": 4
}
{
"version": "2.0.0",
"tasks": [
{
"label": "Compile",
"command": "g++",
"args": [
"-g",//指定编译源代码文件
"${file}",
"-o",// 指定输出文件名,不加该参数则默认输出a.exe
"${fileDirname}/${fileBasenameNoExtension}.exe",
"-ggdb3", // 生成和调试有关的信息
"-Wall", // 开启额外警告
"-static-libgcc", // 静态链接
"-Wno-format",
"-finput-charset=UTF-8",//输入编译器文本编码 默认为UTF-8
"-fexec-charset=GBK"//编译器输出文本编码 自行选择
],
"type": "shell",
"group": {
"kind": "build",
"isDefault": true
},
"presentation": {
"echo": true,
"reveal": "always",
"focus": false,
"panel": "shared"
},
"problemMatcher": {
"owner": "cpp",
"fileLocation": [
"relative","\\"
],
"pattern":{
"regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
"file": 1,
"line": 2,
"column": 3,
"severity": 4,
"message": 5
}
}
}
]
}
{
"version": "0.2.0",
"configurations": [
{
"name": "C++ Launch (GDB)", // 配置名称,将会在启动配置的下拉菜单中显示
"type": "cppdbg", // 配置类型,这里只能为cppdbg
"request": "launch", // 请求配置类型,可以为launch(启动)或attach(附加)
"targetArchitecture": "x64", // 生成目标架构,一般为x86或x64
"program": "${fileDirname}/${fileBasenameNoExtension}.exe", // 将要进行调试的程序的路径
"args": [], // 程序调试时传递给程序的命令行参数,一般设为空即可
"stopAtEntry": false, // 设为true时程序将暂停在程序入口处,一般设置为false
"cwd": "${workspaceRoot}", // 调试程序时的工作目录,一般为${workspaceRoot}
"externalConsole": true, // 调试时是否显示控制台窗口,一般设置为true显示控制台
"internalConsoleOptions": "neverOpen", // 如果不设为neverOpen,调试时会跳到“调试控制台”选项卡",
"MIMode": "gdb", // 指定连接的调试器
"miDebuggerPath": "E:/Environment/MinGW64/bin/gdb.exe", // 调试器路径
"setupCommands": [
{
"description": "Enable pretty-printing for GDB",
"text": "-enable-pretty-printing",
"ignoreFailures": false
}
],
// 此处设置按下F5调用的tasks.json中的任务标签label
"preLaunchTask": "Compile"
}
]
}
{
"workbench.colorTheme": "Hopscotch",
"atomKeymap.promptV3Features": true,
"editor.multiCursorModifier": "ctrlCmd",
"editor.fontSize": 16,
"files.associations": {
"*.json": "jsonc",
"*.cfg": "ini",
"*.fsh": "glsl",
"stack": "cpp",
"iostream": "cpp",
"ostream": "cpp",
"*.tcc": "cpp",
"cctype": "cpp",
"clocale": "cpp",
"cmath": "cpp",
"cstdint": "cpp",
"cstdio": "cpp",
"cstdlib": "cpp",
"cwchar": "cpp",
"cwctype": "cpp",
"exception": "cpp",
"initializer_list": "cpp",
"iosfwd": "cpp",
"istream": "cpp",
"limits": "cpp",
"new": "cpp",
"stdexcept": "cpp",
"streambuf": "cpp",
"system_error": "cpp",
"type_traits": "cpp",
"typeinfo": "cpp",
"utility": "cpp"
},
"editor.snippetSuggestions": "top",
"C_Cpp.clang_format_sortIncludes": true,
"editor.wordWrap": "on",
"editor.formatOnPaste": true,
"editor.formatOnType": true,
}
"intelliSenseMode": "clang-x64"
,在tasks配置文件中设置"command": "g++"
,目前并不知道这样做会有什么后果。