VSCode下C++环境的配置
2018-03-04 18:36
841 查看
前言
VSCode是微软开发的一款免费的跨平台的编辑器。其拥有较好的性能和前端视觉,并且支持Debugging、Git、IntelliSense、和各种extensions。本文介绍的是windows系统下VSCode C++环境的配置,包括运行和调试。
我的系统版本号是10.0.16299.192 VSCode版本号为1.20.1
编译器
可以选择LLVM、MinGW32、MinGW64、Tdm-gcc等主流编译环境的其中一个。其中LLVM前端(词法、语法分析、语义分析、生成中间代码)使用的是clang,效率上优于后面三个所使用的gcc。我下面使用的是tdm-gcc 官网下载 选择tdm64-gcc(64位系统)
下载完毕后保证其文件夹下的bin文件在系统环境变量下,以方便异地调用,如下图
对环境变量的设置有问题的可以百度
如果有对编译效率的追求,可以使用clang编译器,(即LLVM的环境) 但是Clang没有头文件,需要额外去加上,具体我没有去研究,所以这里直接使用了tdm-gcc
还要指出的是,VSCode不适合做项目,只适合平常的语法、算法练习。所以编译效率不是这么的重要了
如果需要做项目还是推荐Visual Studio啦
插件
微软官网有一款插件C/C++ ,我们的配置是基于这个插件的支持对C/C++ 的IntelliSence,debugging,code browsing
下面是官方对IntelliSence的简短介绍
基于变量类型,函数定义和导入模块的智能完成
为了提升效率,我还使用了下面的插件
当然这两个可以不必选择,或者说还有其他许多插件,自行选择,怎么顺手怎么来
配置参数
主要有四个json文件,在.vscode文件下其中launch.json和tasks.json是必要的,更改需谨慎
c_cpp_properties.json和settings.json进行一些习惯的设置,可自由更改
launch.json
{ "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": "C:/TDM-GCC-64/bin/gdb64.exe", // 调试器路径 "setupCommands": [ { "description": "Enable pretty-printing for GDB", "text": "-enable-pretty-printing", "ignoreFailures": false } ], "preLaunchTask": "Compile" } ] }
tasks.json
{ "version": "2.0.0", "tasks": [ { "label": "Compile", "command": "g++", "args": [ "-g ${file}", //指定编译源代码文件 "-o ${fileDirname}/${fileBasenameNoExtension}.exe", // 指定输出文件名,不加该参数则默认输出a.exe "-ggdb3", // 生成和调试有关的信息 "-Wall", // 开启额外警告 "-static-libgcc", // 静态链接 "-std=c++17", // 使用最新的c++17标准 "-Wno-format", "-finput-charset=UTF-8",//输入编译器文本编码 默认为UTF-8 "-fexec-charset=GBK"//编译器输出文本编码 自行选择 ], "type": "shell", "group": { "kind": "build", "isDefault": true }, "presentation": { "echo": true, "reveal": "always", // 在“终端”中显示编译信息的策略,可以为always,silent,never "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 } } } ] }
c_cpp_properties.json
{ "configurations": [ { "name": "Win32", "intelliSenseMode": "clang-x64", "includePath": [ "${workspaceFolder}", "C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c++", "C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c++/x86_64-w64-mingw32", "C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c++/backward", "C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include", "C:/TDM-GCC-64/x86_64-w64-mingw32/include", "C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include-fixed" ], "defines": [ "_DEBUG", "UNICODE", "__GNUC__=7", "__cdecl=__attribute__((__cdecl__))" ], "browse": { "path": [ "${workspaceFolder}", "C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c++", "C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c++/x86_64-w64-mingw32", "C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c++/backward", "C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include", "C:/TDM-GCC-64/x86_64-w64-mingw32/include", "C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include-fixed" ] }, "limitSymbolsToIncludedHeaders": true, "databaseFilename": "" } ], "version": 3 }
settings.json
{ "window.zoomLevel": 1, "editor.snippetSuggestions": "top", "editor.minimap.renderCharacters": false, "editor.formatOnPaste": true, "editor.formatOnType": true, "editor.wordWrap": "on", "C_Cpp.clang_format_sortIncludes": true, "[cpp]": { "editor.quickSuggestions": true }, "[c]": { "editor.quickSuggestions": true }, "problems.decorations.enabled": true, "C_Cpp.intelliSenseEngineFallback": "Enabled", "files.associations": { "*.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" }, }
运行和调试
运行
以下面程序为例press
ctrl+F5直接编译并运行程序(记得程序末尾加system pause)
win的这个输出终端窗口采用的编码是GDK的
调试
还以下面程序为例,安排3个断点,pressF5开始调试 程序会停止在第一个断点
press
F10单步跳过
F11单步调试(会进入函数内部)
左侧可以看到Locals和设置监视
调试控制台中可以看到相关的信息
至此完成了基本的运行和调试
后记
Debug小结
pressctrl+F5直接编译并运行程序
press
F5开始调试(如设置了断点则会停在断点处,如没设置,则会直接退出调试)
press
F10单步跳过
F11单步调试(会进入函数内部)
关于编码
我的VSCode默认编码是UTF-8 因此我在VSCode里新建编辑的文件将会以这种编码方式将信息存储但各式各样的文件,编码形式太多了,VSCode带有自动检测编码功能(但有时候检测不准确)
上面
tasks.json文件中,建议采用
“-finput-charset=UTF-8” //输入编译器文本编码 默认为UTF-8
“-fexec-charset=GBK” //编译后的输出格式
这样在输出终端中可以正常显示
如果要写到文件中,注意下编辑器的编码格式就行
另外,windows自家的记事本默认采用的是
UTF-8 withbom格式进行编码的 建议采用
UTF-8 withoutbom的编辑器进行日常编辑,更为主流些吧。
错误
以上配置参数难免有不妥之处,欢迎实践后的朋友进行交流//在下面评论区留言参考
https://code.visualstudio.com/docs/languages/cpp上面的网址是微软官方的docs,很有用
相关文章推荐
- 整理:Visual Studio Code (vscode) 配置C、C++环境/编写运行C、C++(Windows)
- windows 10环境下 使用 msys2 + vs code 配置 c++ 的编译环境(转)
- VSCode配置C++编写环境
- 整理:Visual Studio Code (vscode) 配置C、C++环境/编写运行C、C++(Windows)
- VScode配置C++编译环境
- Win10环境下配置VScode的C++编译环境
- ubuntu 16.04 VSCode 配置C++开发环境
- [置顶] win10下配置VS Code C/C++编译环境(TDM-GCC)
- Lua在vs2013的配置环境以及C++如何调用lua
- VSCode c++配置文件
- Ubuntu下安装并配置VS Code编译C++的方法
- Ubuntu下安装并配置VS Code编译C++
- VSCode之C/C++调试配置详解
- Ubuntu下安装并配置VS Code编译C++
- VS2015配置C/C++-MySQL开发环境
- 20171231 Ubuntu+Anaconda+VSCode配置多Python开发环境
- 在Linux下使用VSCode开发python3.6的环境配置及一些坑
- 关于vscode编译C/C++的个人相关配置
- Lua在vs2013的配置环境以及C++如何调用lua
- Visual Studio Code配置C、C++运行环境