visualstudiocode下载 studio code 可以配置c++ 一键编译运行吗

基于&Visual&Studio&Code&搭建简易的&C/C++&开发环境
1、安装 C/C++
常见的编译器环境有以下三种:
下载地址:/setup-x86_64.exe
2)MinGW-w64
下载地址:https://sourceforge.net/projects/mingw-w64
打开下载得到的
exe,稍等一会会看到一个选项页面:
Version & &
& & & - GCC
版本,直接选最高
Architecture & - CPU 架构,系统如果为64位,则选择
Threads & &
& & &- API
模式,按默认即可
Exception & &
& - 异常处理方式,seh 仅针对 64 位架构,sjlj 则兼容 32 位架构
Build revision - 修订版本,按默认即可
点击下一步确认安装目录,再点下一步则开始下载所需文件。
配置环境变量
先找到 MinGW-w64 的安装目录,例如:C:\Program
Files\mingw-w64,然后该目录下会有根据先前安装所选的选项生成的一个目录,例如:x86_64-6.3.0-posix-sjlj-rt_v5-rev2,该目录是根据:
${Architecture}-${Version}-${Threads}-${Exception}-${Build
生成的,所以一般而言,安装了一个版本则只会存在一个子目录,继续打开该目录,会看到 mingw64 子目录,继续打开
mingw64,则来到我们需要找到的 MinG-w64 根目录,记下该路径。
我们先在环境变量中添加一项:
变量名:MINGW_W64_HOME
变量值:C:\Program
Files\mingw-w64\x86_64-6.3.0-posix-sjlj-rt_v5-rev2\mingw64(变量值填入刚刚记下的路径)
然后再从 PATH
变量中,末尾追加:;%MINGW_W64_HOME%\bin,如果末尾已有&;&号,则只需要追加
%MINGW_W64_HOME%\bin 即可
检验 gcc、g++、gdb 命令是否可用
打开 CMD,然后分别输入:
如果都能看到输出版本号,则说明配置完成
3)TDM-GCC
TDM-GCC(http://sourceforge.net/projects/tdm-gcc/files/TDM-GCC
Installer/tdm64-gcc-5.1.0-2.exe/download)
2、安装并配置 Visual Studio
下载地址:
可以选择是安装版本(.exe)或是绿色便携版本(.zip)
安装版则打开下载的 exe 文件,然后选择自定义目录进行安装。绿色版则将压缩包中的文件解压到自定义路径下,然后将
Code.exe 添加一个快捷方式到桌面
2.3 运行 Visual Studio
先打开 Visual Studio Code,然后将自动保存开启,以免忘记了保存更改,
点击菜单上的 File(文件),然后点击 Auto Save(自动保存)即可
2.4 添加 C/C++
插件(Microsoft官方出品)
使用快捷键(Ctrl + Shift + X)呼出扩展面板,并在搜索框中输入:C/C++,再安装由 Microsoft
提供的名为 C/C++ 插件
2.5 连接 C/C++
首先建立一个目录来存放项目文件,本文定义为 demo,然后在 Visual Studio Code 打开(Ctrl +
O)该目录,然后新建一个文件,输入以下代码:
using namespace std;
int main() {
& & & cout
&& "Hello World"
然后保存(Ctrl + S)为 main.cpp,这时候会看到 #include
这句下面会有绿色波浪线,这时候将光标移动到该行,行号左边会出现黄色小灯泡,点击会出现一个提示按钮:Add include path
to setting,继续点击该提示,则会在 demo 目录下生成 .vscode 目录,并包含一个
c_cpp_properties.json 文件,c_cpp_properties.json 文件会自动被打开,在
Win32 块中,将 includePath 的内容替换为:
[MINGW_W64_HOME]/lib/gcc/x86_64-w64-mingw32/6.3.0/include/c++/*
[MINGW_W64_HOME] 需要替换为先前添加的环境变量 %MINGW_W64_HOME% 中的值,例如:
C:/Program
Files/mingw-w64/x86_64-6.3.0-posix-sjlj-rt_v5-rev2/mingw64/lib/gcc/x86_64-w64-mingw32/6.3.0/include/c++/*
完整的&c_cpp_properties.json:
"configurations": [
&&"includePath":
&&"/usr/include",
&&"/usr/local/include"
&&"browse":
&&"limitSymbolsToIncludedHeaders":
&&"databaseFilename":
&&"includePath":
&&"/usr/include",
&&"/usr/local/include"
&&"browse":
& &&"limitSymbolsToIncludedHeaders":
&&"databaseFilename":
&&"includePath":
&&"C:/Program
Files/mingw-w64/x86_64-6.3.0-posix-sjlj-rt_v5-rev2/mingw64/lib/gcc/x86_64-w64-mingw32/6.3.0/include/c++/*"
&&"browse":
&&"limitSymbolsToIncludedHeaders":
&&"databaseFilename":
关闭 c_cpp_properties.json 文件,这时候 main.cpp
文件上的的绿色波浪线就会消失,表示头文件配置成功。
按 F5 执行调试,第一次会让你选模板,点击 C++(GDB/LLDB) 即可,这时候会在 .vscode 目录下自动生成
launch.json 文件,替换里面 program 的内容为:
${workspaceRoot}/${fileBasename}.exe
然后,在每一个 config 中 增加:
"miDebuggerPath":"C:/Program
Files/mingw-w64/x86_64-6.3.0-posix-sjlj-rt_v5-rev2/mingw64/bin/gdb.exe",
"preLaunchTask": "g++",
完整的&launch.json&:
"version": "0.2.0",
&&"configurations":
&&"request":
&&"program":
"${workspaceRoot}/${fileBasename}.exe",
&&"stopAtEntry":
"${workspaceRoot}",
&&"environment":
&&"externalConsole":
&&"miDebuggerPath":"C:/Program
Files/mingw-w64/x86_64-6.3.0-posix-sjlj-rt_v5-rev2/mingw64/bin/gdb.exe",
&&"preLaunchTask":
&&"linux":
&&"MIMode":
&&"setupCommands":
&&"description":
pretty-printing for gdb",
"-enable-pretty-printing",
&&"ignoreFailures":
&&"MIMode":
&&"windows":
&&"MIMode":
&&"setupCommands":
&&"description":
pretty-printing for gdb",
"-enable-pretty-printing",
&&"ignoreFailures":
&&"request":
&&"program":
"${workspaceRoot}/${fileBasename}.exe",
&&"processId":
"${command:pickProcess}",
&&"miDebuggerPath":"C:/Program
Files/mingw-w64/x86_64-6.3.0-posix-sjlj-rt_v5-&
&&rev2/mingw64/bin/gdb.exe",
&&"preLaunchTask":
&&"linux":
&&"MIMode":
&&"setupCommands":
&&"description":
pretty-printing for gdb",
"-enable-pretty-printing",
&&"ignoreFailures":
&&"MIMode":
&&"windows":
&&"MIMode":
&&"setupCommands":
&&"description":
pretty-printing for gdb",
"-enable-pretty-printing",
&&"ignoreFailures":
然后再按一次 F5 ,会弹出需要你配置执行任务的提示,点击 Configure runner
task(配置任务运行程序),然后选择 Others,会自动在 .vscode 目录下生成 tasks.json
文件,我们全文替换其中的内容为:
See /fwlink/?LinkId=733558
for the documentation about the tasks.json format
&&"version":
&&"command":
["-g", "main.cpp", "-o", "${file}.exe"],
&&"isShellCommand":
&&"showOutput":
再按 F5 则可以看到执行结果,设置断点则会在运行调试时,停顿在断点上。
Visual Studio Code 会在 cpp 或者 c 文件同级目录下,建立一个 .vscode
目录,用以存放启动配置,之后每新建一个目录来存放新项目,都需要重新配置 2.4、2.5 两个步骤,或者直接拷贝 .vscode
目录到新项目的目录下
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。Visual Studio Code如何编写运行C、C++? - 知乎451被浏览138420分享邀请回答122 条评论分享收藏感谢收起// /Microsoft/vscode-cpptools/blob/master/launch.md
"version": "0.2.0",
"configurations": [
"name": "(gdb) Launch", // 配置名称,将会在启动配置的下拉菜单中显示
"type": "cppdbg", // 配置类型,这里只能为cppdbg
"request": "launch", // 请求配置类型,可以为launch(启动)或attach(附加)
"program": "${fileDirname}/${fileBasenameNoExtension}.exe", // 将要进行调试的程序的路径
"args": [], // 程序调试时传递给程序的命令行参数,一般设为空即可
"stopAtEntry": false, // 设为true时程序将暂停在程序入口处,我一般设置为true
"cwd": "${workspaceRoot}", // 调试程序时的工作目录
"environment": [], // (环境变量?)
"externalConsole": true, // 调试时是否显示控制台窗口,一般设置为true显示控制台
"MIMode": "gdb", // 指定连接的调试器,可以为gdb或lldb。但目前lldb在windows下没有预编译好的版本。
"miDebuggerPath": "gdb.exe", // 调试器路径。
"setupCommands": [
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": false
"preLaunchTask": "Compile" // 调试会话开始前执行的任务,一般为编译程序。与tasks.json的taskName相对应
tasks.json代码:该文件reveal可根据自己喜好修改,-std根据自己的情况修改。如果不想要额外警告,把-Wall那一条删去。如果使用Clang编译C语言,把command的值改成clang。如果使用MinGW,编译C用gcc,编译c++用g++,并把-target和-fcolor那两条删去。// /docs/editor/tasks
"version": "2.0.0",
"tasks": [
"taskName": "Compile", // 任务名称,与launch.json的preLaunchTask相对应
"command": "clang++", // 如果用MinGW,编译C用gcc,编译c++用g++
"${file}",
"-o", // 指定输出文件名,不加该参数则默认输出a.exe
"${fileDirname}/${fileBasenameNoExtension}.exe",
"-g", // 生成和调试有关的信息
"-Wall", // 开启额外警告
"-static-libgcc", // 静态链接
"-fcolor-diagnostics",
"--target=x86_64-w64-mingw", // 默认target为msvc,不加这一条就会找不到头文件
"-std=c++1z" // c++1z即c++17,C语言最新标准为c11,或根据自己的需要进行修改
], // 编译命令参数
"type": "shell",
"group": {
"kind": "build",
"isDefault": true // 设为false可做到一个tasks.json配置多个编译指令,需要自己修改本文件,我这里不多提
"presentation": {
"echo": true,
"reveal": "silent", // 设置是否在“终端”中显示编译信息,可以为always,silent,never。一些错误提示也在这里,但是因为有静态检测,我就设为silent了。
"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
} // 1.11.0的更新日志里说可以直接写"problemMatcher": "$gcc",但是我试了一下不行。
settings.json代码:如果你没有合并Clang和MinGW,则该文件中头文件的路径必需修改成MinGW的路径,否则Lint无效。版本号(这里是7和7.1.0)如果不同,也要修改。输gcc -v可以看到)Windows下的路径为反斜杠,原本应使用两个反斜杠来转义,但直接用斜杠在VS Code中也接受// 将设置放入此文件中以覆盖默认值和用户设置。
"files.defaultLanguage": "c", // ctrl+N新建文件后默认的语言
"c-cpp-flylint.cppcheck.enable": false,
"c-cpp-flylint.flexelint.enable": false,
"c-cpp-flylint.run": "onType", // 此选项貌似不起作用
"c-cpp-flylint.clang.includePaths": [
"${workspaceRoot}",
"C:/llvm/lib/gcc/x86_64-w64-mingw32/7.1.0/include/c++",
"C:/llvm/lib/gcc/x86_64-w64-mingw32/7.1.0/include/c++/x86_64-w64-mingw32",
"C:/llvm/lib/gcc/x86_64-w64-mingw32/7.1.0/include/c++/backward",
"C:/llvm/lib/gcc/x86_64-w64-mingw32/7.1.0/include",
"C:/llvm/include",
"C:/llvm/x86_64-w64-mingw32/include",
"C:/llvm/lib/gcc/x86_64-w64-mingw32/7.1.0/include-fixed"
"c-cpp-flylint.clang.defines": [
"UNICODE",
"__GNUC__=7",
"__cdecl=__attribute__((__cdecl__))"
"c-cpp-flylint.standard": [
"c11", // 如果你想要使用c89,就自己改
"c++1z" // c++1z即c++17
"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++1z && $dir$fileNameWithoutExt"
"code-runner.saveFileBeforeRun": true,
"C_Cpp.clang_format_sortIncludes": true
c_cpp_properties.json代码:如果你没有合并Clang和MinGW,则该文件中头文件的路径必需修改成MinGW的路径,否则IntelliSense无效。版本号如果不同,也要修改。{
"configurations": [
"name": "Win32",
"intelliSenseMode": "clang-x64",
"includePath": [
"${workspaceRoot}",
"C:/llvm/lib/gcc/x86_64-w64-mingw32/7.1.0/include/c++",
"C:/llvm/lib/gcc/x86_64-w64-mingw32/7.1.0/include/c++/x86_64-w64-mingw32",
"C:/llvm/lib/gcc/x86_64-w64-mingw32/7.1.0/include/c++/backward",
"C:/llvm/lib/gcc/x86_64-w64-mingw32/7.1.0/include",
"C:/llvm/include",
"C:/llvm/x86_64-w64-mingw32/include",
"C:/llvm/lib/gcc/x86_64-w64-mingw32/7.1.0/include-fixed"
"defines": [
"UNICODE",
"__GNUC__=7",
"__cdecl=__attribute__((__cdecl__))"
"browse": {
"C:/llvm/x86_64-w64-mingw32/include",
"C:/llvm/lib/gcc/x86_64-w64-mingw32/7.1.0/include",
"C:/llvm/lib/gcc/x86_64-w64-mingw32/7.1.0/include-fixed",
"C:/llvm/include/*",
"${workspaceRoot}"
"limitSymbolsToIncludedHeaders": true,
"databaseFilename": ""
"version": 2
3.写代码,编译,调试新建文件后就可以写代码了。写好以后保存一下(ctrl+S),会有Lint。插件会给一些建议性的warning(比如声明了变量但不使用),自己清楚就行。如果觉得不爽,也有方法不让它提示,比如去掉-Wall就会少一些。如果还想去掉更多的警告,我这里就不提了,自己找资料。按Alt+Shift+F(或者右键)可以格式化代码。代码文件就不用保存到.vscode文件夹下了,在工作区内就行。如果是按ctrl+N新建的文件,会出现c-cpp-flylint: A pro the document is not locally present on disk.的错误,这是因为这样新建的文件是在内存中的,还没有保存,插件找不到该文件,就报错了。保存即可解决。按ctrl+shift+B单纯编译,按f5为调试(调试前会自动编译),但如果编译出现错误它也会尝试进行调试,这样就会调试上一次编译成功的文件,所以我建议还是分开进行。加断点在列号前面点一下就行,可以加在main函数那里,f5以后就会在一开始停下来,或者launch.json中设置"stopAtEntry": true。按f11可以一步一步进行,箭头所指的那行代码就是下一步要运行的代码。左边有个调试栏,可以看到变量的值。注意:如果你只写了个hello world,不加任何断点,按f5以后黑框框一闪而过是正常现象。想程序暂停运行可以在末尾加上getchar();或者加断点。如果你不需要调试,可以直接右键选run code。现在code runner可以在新版终端中运行了,可以交互。新版终端速度提升比较明显,但是又少了显示时间的功能。4.其他设置我的一些其他的设置,用在全局settings.json里,根据自己的情况调整,不需要全部照着我的写。写完一个以后要打逗号,最后一个就不用了。"editor.fontFamily": "Consolas, 微软雅黑", // 控制编辑器字体
"workbench.colorTheme": "One Dark Pro", // 主题
"files.trimTrailingWhitespace": true, // 保存时,删除每一行末尾的空格
"workbench.colorCustomizations": {
"activityBar.foreground": "#33ff66" // 自定义颜色
"git.enabled": false, // 如果你不用git,我建议你关闭它
"editor.minimap.enabled": false, // 我个人不用minimap,就是右边那个东西
"editor.dragAndDrop": false, // 选中文字,可以拖动它们调整位置。我是不需要
"files.autoGuessEncoding": true // 启用后,会在打开文件时尝试猜测字符集编码
5.进一步学习可以阅读官方英文文档:快捷键:英文文档中当然有快捷键的信息,而且英文文档会更新。这个单独列出来还是给初学者吧。我就提示一点特别重要的:出现Intellisense或者snippets的时候按tab可以补全代码。VS Code其实是前端利器,学html, css, javascript时可以好好利用哦。6.关于乱码VS Code输出会出现乱码,很多人都遇到过。这是因为VS Code内部用的是utf-8编码,cmd/powershell是gbk编码。直接编译,会把“你好”输出成“浣犲ソ”。如果把cmd的活动代码页改成65001,会出现汉字只能显示一半的问题。Linux就没有这个问题。原本的解决方法是使用gcc,编译时用-fexec-charset=GBK这个参数,生成的程序就是GBK编码的。但是,clang的execution-charset supports only UTF-8。所以,生成的程序在cmd/ps以及VS Code的终端(其实也是powershell)中运行,输出中文还是会乱码;但是在VS Code的“输出”中就是正常的。如果想解决这个问题,可以百度“宽字符输出”。如果是打开已有的以GBK编码的文件,VS Code会以UTF-8编码打开,这样编辑器内的中文会乱码,不过对于初学C的同学来说,写的代码一般只有注释是中文。此时要点右下角的GBK,选“通过编码重新打开”,选UTF-8即可。或者装一个GBKtoUTF8插件。这样做了以后,在含有中文的路径下可以编译,但是仍然不能调试,所以还是把代码放到不含中文的路径中吧。7.其他现在cpptools也有Lint了,但是效果非常差。如果你用的是gcc而不是clang,也可以考虑把它打开。设置中"C_Cpp.intelliSenseEngine": "Default"。c_cpp_properties.json的内容来自于 ,因为这个json不允许有注释(其实按照标准本来就不能有),链接我就给在此处。如你觉得太难或者太复杂,也可以只用gcc加上Code Runner,不过这样VS Code真的就只起到编译器的作用了,和一个方便一点的记事本差不多。如果你真的从来没有接触过gcc,上面的东西也看不懂,可以看这篇回答:8.删除exe按照这样配置,长期编译代码下来肯定有一大堆的exe,还可能分散在不同的文件夹里。如果你不需要,有什么办法解决呢?其实方法蛮多的。第一种方法是把生成的文件的目录指定到一个特定的目录,里面都放的是exe。修改一下json文件不难做到。第二种方法是在cmd下输一条删除该目录及子目录下所有exe的命令(我不会用powershell……):del /q /s *.exe
不过因为有/q,所以小心使用,别把路径弄错了。第三种方法,到工作区的目录下搜索*.exe就都出来了。9.头文件报错有几位同学遇到了路径设置正确,编译也通过,但是“问题"面板里出现找不到头文件的error。我也遇到过。这个error是cpptools报的。我重现了几次,然后现在再也没有遇到过这个问题了……总之这问题原因不明,解决办法不明。有人说完全重装一遍VS Code解决了。不过反正不影响编译,就当做没看到算了。如果你遇到了又解决了可以告诉大家呦~有问题可以留言讨论,不过最好详细一点描述。原创,非商业转载请注明出处。引用的网页,侵删。7866 条评论分享收藏感谢收起查看更多回答2 个回答被折叠()visual studio code 可以配置c++ 一键编译运行吗? - 知乎46被浏览11329分享邀请回答74 条评论分享收藏感谢收起1. 官网下载 Visual Studio Code ,安装。按提示安装 cpp 插件和 cmake 插件。
& & 官网下载 CMake ,安装。
& & 官网下载 Mingw ,安装。
安装 Mingw 时,注意勾选 mingw32-automake, mingw32-base, mingw32-gcc, mingw32-gcc-g++, msys-base, mingw32-binutils, mingw32-gdb.
2. File-&Open Folder 打开项目所在文件夹。
文件夹的目录应为
ProjectDir
3. 在各目录下建立相应的CMakeLists.txt文件,打开CMake,将 source code 目录设为 ProjectDir ,将 build 目录设为 ProjectDir/build ,点击 Configure 后,选择 Generator 为 Mingw Makefile ,将 CMAKE_BUILD_TYPE 设为 Debug ,然后点 Generate,就生成了 Makefile,再在 cmd 中 cd 到 build 目录下,运行mingw32-make,在 bin 中就有了可执行文件。
4. 在 Visual Studio Code 中点击左边第四个按钮,也就是 Debug 按钮,按运行,选择 c++(gdb/lldb) 就会在 .vscode 目录下生成一个 launch.json 文件,将文件中的&"program" 改为 "${workspaceRoot}/build/bin/XX.exe" ,将 "miDebuggerPath" 改为 "c:\\MinGW\\bin\\gdb.exe"。再设置断点,运行,就可以调试了。
PS:期间出现了少dll导致的&无法定位程序输入点&的问题,是因为mingw的bin目录在path环境变量中太靠后了,移到前面即可。
/ode/archive//2143541.html
http://blog.csdn.net/dbzhang800/article/details/6314073
阅读(...) 评论()

我要回帖

更多关于 vscode和visualstudio 的文章

 

随机推荐