VS code 是一个非常不错的代码编辑器。它不依赖与任何编译器或者解释器,但却能高效的利用第三方编译器或解释器来给用户提供良好的代码编写环境。
我喜欢VS code的三点,丰富强大的插件,快捷的语法分析自动补全和自动转跳功能,集成Git管理与Debug功能。
第一个功能不必说,他是VScode的强大支柱,我可以找到自己喜欢的主题插件,字体或者语言支持插件等,有了它,VScode能给人更多的惊喜,和附加的功能,这些功能等着我们去探索。就比如我要想显示一个二进制文件的二进制信息,找个插件就有了,要写markdown,cmakelist没有语法高亮很难受?去插件商店里找找就有了。这个主题不好看,想换个主题,也可以通过换插件的形式来完成。想写Latex文档,没有代码提示,商店里也有相应的功能支持,习惯了Vim或Emacs键位?商店里也有。
第二个比如C/C++项目,下载C/C++那个C/C++ IntelliSense, debugging, and code browsing 插件加上一个编译器调试器就能提供第二个功能,而且配置还很简单快捷。想想在Emacs上或者Vim想实现代码自动补全和转跳功能都困难成啥样了。至少对新手来说花费的时间代价已经远远超过安装VScode所费的时间了,而VScode安装了就能用的。
好现在来看看实现第二个功能到底有多简单
2、安装编译器调试器,比如gcc,Linux下一般都直接集成了,windows下一般只要下载mingw就可以下全编译和调试的功能,百度mingw进入官网下载,可以选择下载mingw-get-setup.exe,然后再里面选择想要的gnu产品,然后就添加bin目录到系统环境
\
下载好后还要添加到系统环境中才能方便VScode构建项目时调用哦。
includePath
常用来指明项目本身的头文件。{
"configurations": [
{
"name": "Win32",
"includePath": [
"${workspaceFolder}/**"
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"compilerPath": "E:\\ProgramFiles\\LLVM\\bin\\clang++.exe",
"cStandard": "c11",
"cppStandard": "c++17",
"intelliSenseMode": "clang-x64",
"compilerArgs": [
"--target=x86_64-pc-mingw32"
]
}
],
"version": 4
}
OK啦,做到这一步一般来说你以及拥有了一个很不错的代码智能提示和补全的编辑器了,就只是下载了一个插件和一个编译器,然后你就可以尽情的写代码了。你可以用第三方项目构建管理工具在终端命令行上完成你的项目构建。值得一提的是,如果是交叉编译,VScode也是支持的,只要把编译器换成交叉编译的编译器,然后交叉平台上的头文件也可以包含在里面,然后让智能插件去分析代码语法和自动补全以及代码转跳。
${file}
会获取你当前正在编辑文件的文件名,而我们把它作为g++的输入参数,输出我则是放在当前工作目录下的一个build目录,并给与的名字和文件名相同,而这通过下面一句${workspaceFolder}\\build\\${fileBasenameNoExtension}.exe
就能简单完成。同时我们指定的这个任务是在终端完成的,所以任务类型设置为shell。而终端任务说白了就是一个能一键自动帮你完成所有需要输入终端命令的操作,他会根据这些信息进行匹配。然后在传递给终端,终端通过环境变量来进行多个程序调用相互,最终输出我们想要的结果。{
"version": "2.0.0",
"tasks": [
{
"type": "shell",
"label": "g++ build exe",
"command": "g++",
"args": [
"-g",
"${file}",
"-o", // fileDirname, workspaceFolder
"${workspaceFolder}\\build\\${fileBasenameNoExtension}.exe"
],
"options": {
"cwd": "E:\\ProgramFiles\\mingw64\\bin"
},
"problemMatcher": [
"$gcc"
],
"group": "build"
}
]
}
如此以来我们想将当前代码编译成可执行文件,那么就只需调用这个task就行了,通过快捷键Ctrl+B或者在菜单栏->终端->运行生成任务。然后就会在build下看见对于当前文件名的可执行文件了。这时后仔细查看终端,我们发现,终端上有下面这样一条命令。这就印证了刚才我们说的,VScode执行任务时其实就是在调用终端,帮我们自动输入了指令。
原文:https://www.cnblogs.com/wjundong/p/11637277.html