【转载】 vscode如何在最新版本中配置c/c++语言环境中的launch.json和tasks.json?
作者:来知晓
链接:https://www.zhihu.com/question/336266287/answer/2144611720
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
===============================================================
目录
总体说明
总体特点:
- JSON(JavaScript Object Notation) 是基于JavaScript的一种数据交换语言
- 核心文件:
tasks.json / launch.json - 其他文件:
c_cpp_propertis.json / settings.json / compile_commands.json - 辅助插件:C/C++
主要作用:
<img src="https://pic1.zhimg.com/50/v2-208cac174568afb32d1fa2737073658e_720w.jpg?source=1940ef5c" data-caption="" data-size="normal" data-rawwidth="789" data-rawheight="299" class="origin_image zh-lightbox-thumb" width="789" data-original="https://pic2.zhimg.com/v2-208cac174568afb32d1fa2737073658e_r.jpg?source=1940ef5c"/>
复用参考配置文件关键点:
- 拿到demo配置文件,参考tasks.json和launch.json,修改对应gdb/gcc路径和源文件、头文件等
- 保证lauch调用的exe名与tasks生成的exe名一致,修改完毕后,
ctrl + shift + b或点击终端->运行生成任务,即调用tasks.json,生成exe - 快捷键F5运行或者点击左侧栏乌龟加播放按钮找到左上角绿色播放按钮,开始调试,即
调用lauch.json,运行exe
举例说明
main.c为例,配置如下:main.c
#include <stdio.h>
int main()
{
printf("Hi World!\n");
return 0;
}
目录结构
- .vscode
- tasks.json
- launch.json
- main.c
tasks.json
模板如下:
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "Build", // 需与lauch.json中"preLaunchTask"项命名一致
"type": "shell",
"command": "D:\\xx\\mingw\\bin\\gcc.exe",
"args": [
"main.c",
"-g",
"-o",
"main.exe" // 输出exe名,要与launch中调用的program项命名一致
],
"group": {
"kind": "build",
"isDefault": true
},
// Use the standard MS compiler pattern to detect errors, warnings and infos
"problemMatcher": [
"$gcc"
]
}
]
}
launch.json
模板如下:
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "gdbdebug",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}\\main.exe", // 调用的exe名,要与tasks生成的exe名一致
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": true, // 决定输出是单独外部黑窗口显示,还是在IDE里终端黑窗口显示
"MIMode": "gdb",
"miDebuggerPath": "D:\\xx\\mingw\\bin\\gdb.exe",
"preLaunchTask": "Build", // 此项命名需要与tasks.json中的label项命名一致,作用是每次调用launch时会先调用tasks.json,从而不用自己每次都ctrl+shift+b手动生成最新任务后,才能调用launch
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}
重要参数说明:
program选项为要调试程序的路径,此处为main.exeargs为运行时添加的参数stopAtEntry选项默认为false,若设置为true,则会在函数入口中暂停externalConsole为是否在外部控制外运行,设置为true会弹出windows的运行窗口miDebuggerPath为gbd调试器的路径setupCommands为启动调试前为GDB调试器设置相应的命令preLaunchTask选项为运行调试前执行的任务
其他json
c c_cpp_propertis.json / settings.json / compile_commands.json可通过插件自动生成,并做相应的配置调节,不再赘述。
编译提示找不到gcc任务
- 根因:tasks.json里的label名字和launch.json中的preLaunchTask名字没对应上,导致编译后launch不到对应exe
- 分析:tasks.json是编译,launch.json是运行exe,tasks.json在lanuch之前。tasks里的label一定要跟launch.json中的preLaunchTask名字对应一致。之后则不会报找不到gcc任务错误。
多个main函数入口,导致编译中止。提示:multiple definition of 'main'
- 删除掉有关.c文件即可,让这些含main的不参与编译。
- 或者在tasks.json中排除掉其余main函数相关的c文件,让其不参与编译即可。
【转载】 vscode如何在最新版本中配置c/c++语言环境中的launch.json和tasks.json?的更多相关文章
- IDEA中配置Scala开发编译环境
安装JDK 因为Scala是运行在JVM平台上的,所以安装Scala之前要安装JDK. 安装Scala Windows安装Scala编译器 访问Scala官网http://www.scala-lang ...
- 折腾了好久的vscode配置c/c++语言环境(Windows环境下)
最近有c语言相关的作业,但是突然再次拿起大一的时候那些c语言编辑器的时候,总觉得不智能,于是下了一个vscode,准备配一个c语言的环境 步骤如下: 1.vs官网下载好vscode,安装好以后再下载一 ...
- 使用pipework将Docker容器配置到本地网络环境中
使用pipework将Docker容器配置到本地网络环境中 需求 在使用Docker的过程中,有时候我们会有将Docker容器配置到和主机同一网段的需求.要实现这个需求,我们只要将Docker容器和主 ...
- 在R语言环境中无法载入rJava包的解决办法
问题描述: 安装包xlsx包后,运行library("xlsx")后弹出错误窗口: RGui (64-bit): Rgui.exe - 系统错误 无法启动此程序,因为计算机中丢失 ...
- ionic2如何升级到最新版本、配置开发环境
好久没写东西了,去年用了angular2的RC版本和ionic2写了一个项目,因为开发周期和有些版本不稳定,所以一直没有升级,ng2新版本引用Aot打包,听说优化还不错,现在尝试升级ioni ...
- 在VMware虚拟机中配置DOS汇编开发环境!!
操作系统:win7 32位 DOS环境:DosBox 下载:http://www.dosbox.com/ 选择当前适合自己版本,下载就可以了. 汇编编译器:MASM 5.0 下载:http://do ...
- ASP.Net Core 中使用Zookeeper搭建分布式环境中的配置中心系列一:使用Zookeeper.Net组件演示基本的操作
前言:马上要过年了,祝大家新年快乐!在过年回家前分享一篇关于Zookeeper的文章,我们都知道现在微服务盛行,大数据.分布式系统中经常会使用到Zookeeper,它是微服务.分布式系统中必不可少的分 ...
- vsCode怎么为一个前端项目配置ts的运行环境
vsCode为一个前端项目配置ts的运行环境,ts文件保存的时候自动编译成js文件: 假设此前端项目名称为Web:文件结构如图 1. 在根目录中新建一个“.vscode”文件夹,里面建一个“tasks ...
- vscode中关于launch.json和tasks.json的变量说明
vscode是一个轻量级的文本编辑器,但是它的拓展插件可以让他拓展成功能齐全的IDE,这其中就靠的是tasks.json和launch.json的配置 这两个json文件的相关变量是vscode特有的 ...
- 在VS2008中配置WDK7600驱动开发环境
网上这类资料多如牛毛,也许很多人都是转来转去,却很有人去真正的测试,有时候感觉确实对他人也是一种误导. 这里是我自己在VS2008 + WDK7600.16385.0 + DDKWizard配置自己的 ...
随机推荐
- 使用 nsenter 排查容器网络问题
需求 我想进入容器中执行 curl 命令探测某个地址的连通性,但是容器镜像里默认没有 curl 命令.我这里是一个内网环境不太方便使用 yum 或者 apt 安装,怎么办? 这个需求比较典型,这里教大 ...
- Future集合会等线程池执行完才开始遍历吗?
先说结论:Future集合并不是等线程池执行完才开始遍历,而是线程池内的线程执行完一条Future集合就立即遍历一条 在使用线程池的业务场景下,我们经常需要获取线程执行的返回值,此时我们需要Calla ...
- 第四届物联网与机器学习国际学术会议(IoTML 2024)
[ACM独立出版,高录用,见刊检索快速稳定]第四届物联网与机器学习国际学术会议(IoTML 2024) [IoTML 2023会后三个半月内完成EI检索]2024 4th International ...
- 在线XML格式化工具
在线XML格式化工具可以帮助您轻松格式化混乱的XML代码.只需将您的XML代码复制并粘贴到文本框中,工具会自动对代码进行缩进.对齐和添加空格等操作,使代码看起来更加整洁和专业. 在线XML格式化工具
- 泛型模板化设计DEMO
泛型模板化设计DEMO 1. 定义Result泛型类 package com.example.core.mydemo.java.fanxing; public class Result<T> ...
- idea文件的编码设置,解决中文编码不一致问题,对RSA验签及文本比较的测试方法 -Dfile.encoding=UTF-8
String reqContent = "abcdef中文"; //new String("abcdefee".getBytes()," GBK &q ...
- 解决Mixed Content:the page at‘https://' was loaded over HTTPS,but requested an insecure resource 'http://'
问题:在Vue项目中使用axios访问了一个http协议的接口,报错如下 查资料后发现原因是在https中请求http接口或引入http资源都会被直接blocked(阻止),浏览器默认此行为不安全,会 ...
- 认识.NET 日志系统
认识.NET 日志系统 基本概念 日志级别:Trace<Debug<Information<Waring<Error<Critical 日志提供者(LoggingProv ...
- C#中关于 object,dynamic 一点使用心得
首先说一下使用场景 WebAPI接口入参使用 object和 dynamic 后续解析和处理 1.object和dynamic 区别 在.NET中,object和dynamic也有一些区别: obj ...
- Js 中的数组
在js 中,数组就是对象,除了可以使用字面量语法[...]来声明数组外,它和其它对象没有什么区别.当创建一个数组['a', 'b', 'c']时,内部的实现形式如下: { length: 3, ...