vscode 运行C++

2023-05-16

本文先介绍了windows下 VSCODE运行C++前,搭建C++运行环境的必要步骤。后介绍了tasks.jsonlaunch.json的作用,并给出了自己使用的配置方案。最后给出了常见问题的解决措施。

1- 环境搭建

在安装VScode后,还需要:

  • 添加C/C++插件。
  • 下载\MinGW,并添加相应的\MinGW\bin到系统环境变量中。
  • 在工程目录下的.vscode目录下,添加task.jsonlunch.json文件。
  • 准备好main.cpp文件后,点击F5即可实现运行。

不了解这个过程的话,可以查看ZHIHU: Visual Studio Code 如何编写运行 C、C++ 程序?.

2- 例子

看例子前,请先了解:
tasks可以被用来做编译,通过F1→run task来运行编译任务。
tasks.json中,你将在这里设置:(部分罗列)

  • 编译任务的名称,如"label": "Build",
  • 哪些源文件(.cpp)一起编译成一个可执行文件,生成可执行文件的名称。
  • 可执行文件是否用于调试。

launch 用来运行结果,包括但不限于run、debug、compile。可通过F5运行最近的launch选项,在左边调试栏或左下角选择具体的launch选项。
在这里插入图片描述

  • 若需要在launch中需要编译,那就需要加载tasks,使用"preLaunchTask": "Build", preLaunchTask的属性值为tasks.jsonlabel的属性值。
  • 启动项名称由name控制。

想要更具体的了解task.jsonlaunch.json》json,可参考:vscode官网
官网中对面向具体编程语言的一些可选项属性的说明较少,只能是参见其他博客了。

给出自己用的文件:

lunch.json

// launch.json
{
    "version": "0.2.0",
    "configurations": [
    {
        "name": "Launch", 
        "preLaunchTask": "Build",  
        "type": "cppdbg",
        "request": "launch",
        "program": "${env:windir}\\System32\\cmd.exe", 
        "args": [
            "/C","${workspaceFolder}/main.exe", "&", "pause"
        ],
        "stopAtEntry": false, 
        "cwd": "${workspaceFolder}",
        "environment": [],
        "externalConsole": true,  
        "MIMode": "gdb",
        "miDebuggerPath": "C:/Program Files/CodeBlocks/MinGW/bin/gdb.exe",//根据本地路径修改
        "setupCommands": [
            {
                "description": "Enable pretty-printing for gdb",
                "text": "-enable-pretty-printing",
                "ignoreFailures": true
            }
        ]
    },
    {
        "name": "DBG", 
        "preLaunchTask": "Build", 
        "type": "cppdbg",
        "request": "launch",
        "program": "${workspaceFolder}/main.exe", 
        "args": [ ],
        "stopAtEntry": false, 
        "cwd": "${workspaceFolder}", 
        "environment": [],
        "externalConsole": false, 
        "MIMode": "gdb",
        "miDebuggerPath": "C:/Program Files/CodeBlocks/MinGW/bin/gdb.exe",
        "setupCommands": [
            {
                "description": "Enable pretty-printing for gdb",
                "text": "-enable-pretty-printing",
                "ignoreFailures": true
            }
        ]
    }
    ]
}

tasks.json

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "Build",  // 任务的名字叫Build,注意是大小写区分的,等会在launch中调用这个名字
            "type": "shell",  // 任务执行的是shell命令,也可以是
            "command": "g++", // 命令是g++
            "args": [
                "'-Wall'", "-g",
                "'-std=c++17'",  //使用c++17标准编译
                "${workspaceFolder}/*.cpp", //当前文件名
                "-o", //对象名,不进行编译优化
                "'main.exe'",  //当前文件名(去掉扩展名)
            ],
          // 所以以上部分,就是在shell中执行(假设文件名为filename.cpp)
          // g++ filename.cpp -o filename.exe
            "group": { 
                "kind": "build",
                "isDefault": true   
                // 任务分组,因为是tasks而不是task,意味着可以连着执行很多任务
                // 在build组的任务们,可以通过在Command Palette(F1) 输入run build task来运行
                // 当然,如果任务分组是test,你就可以用run test task来运行 
            },
            "problemMatcher": [
                "$gcc" // 使用gcc捕获错误
            ],
        }
    ]
}

3- 问题汇总

下面不显示整个文件,只列出相关属性及值,提供检查。

3.1- 结果在cmd中显示

launch.json下:

"program": "${env:windir}\\System32\\cmd.exe", 
"args": [
	"g++","/C","${fileDirname}/${fileBasenameNoExtension}.exe", "&", "pause"
],
"externalConsole":true

反之,若要直接运行a.exe,并在vscode中显示,则:

"program": "${fileDirname}/${fileBasenameNoExtension}.exe", 
"args": [],

3.2- cmd运行结束后闪退

launch.json下:
运行前都加断点:

"stopAtEntry": false,

运行结束后暂停:

"args": ["/k", "${fileDirname}\\${fileBasenameNoExtension}.exe",  ],

或者:

"args": [
	"g++","/C","${fileDirname}/${fileBasenameNoExtension}.exe", "&", "pause"
],

3.3- 多文件,且总是从main.exe运行

tasks.json文件下:

"command": "g++", // 命令是g++
"args": [
	"'-Wall'",
	"'-std=c++17'", 
	"${workspaceFolder}/*.cpp",
	"-o",
	"'main.exe'",
],

launch.json文件下

"program": "${fileDirname}/main.exe",

3.4- 无法调试:

launch.json文件:

"MIMode": "gdb",
"miDebuggerPath": "c:/MinGW/bin/gdb.exe",
"setupCommands": [
	{
		"description": "Enable pretty-printing for gdb",
		"text": "-enable-pretty-printing",
		"ignoreFailures": true
	}]

可执行文件中,还需要添加调试信息,断点设置才会生效。
tasks.json,即:

"args": [	"g++", "-g",```];

编译和显示问题

Q: 符号编码与乱码问题
A: 详见我的另一篇博客符号编码与乱码问题

Q: 程序include <thread>了,但编译通过,但CMD无输出。双击out.exe输出 无法定位程序输入点 ZNSt6thread15 M Sta rt threadESt10unique ptrINS 6 StateESt14defa ult deleteIS1 EEPFvvE 于动态链接库 C:WsersXFunnyZhangXDocumentsXVsCodeCppXtest.exe 上 。
A: 我把C:\mingw64\bin 环境变量加到了用户变量中,而不是系统变量中。vscode下编译时可以从用户变量中读取,但运行可执行程序时,可执行程序获取不到响应的thread动态库。因此只要把环境变量改到系统变量中即可。

Q:无法将“g++”项识别为 cmdlet、函数、脚本文件或可运行程序的名称?[-]
A: 排除没有将g++添加到环境变量的问题后,可将vscode以管理员方式运行。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vscode 运行C++ 的相关文章

  • VsCode的 code . 失效了?如何解决

    已经安装了vscode 为什么没有 code 命令呢 是因为你下载vscode的时候 是直接拷贝的文件 或者下载失误的问题 从而导致code环境变量没有配置 配置环境变量 path 找到我的电脑 右键 属性 2 选择高级系统设置 单机即可
  • 猿如意

    目录 一 什么是猿如意 二 借助猿如意安装Visual Studio Code 1 安装猿如意 2 安装Visual Studio Code 三 总结 一 什么是猿如意 猿如意是CSDN推出来的一款面向开发者的工具 他能够帮助开发者 找到自
  • 在vscode中做实验出现的bug......

    1 python如何调用opencv中的saliency模块 如果你已经安装了opencv python的库 但是调用cv2 saliency方法时出现了如下的报错 module cv2 saliency has no attribute
  • VSCode编码特效

    下载插件 Power Mode 然后来到settings json文件进行修改配置 如果找不到 可以只搜索settings 代码中继续追加这部分代码 explorer confirmDelete false powermode enable
  • 【VsCode远程开发】Windows SSH远程连接Linux服务器 - 无公网IP内网穿透

    文章目录 前言 视频教程 1 安装OpenSSH 2 vscode配置ssh 3 局域网测试连接远程服务器 4 公网远程连接 4 1 ubuntu安装cpolar内网穿透 4 2 创建隧道映射 4 3 测试公网远程连接 5 配置固定TCP端
  • VSCode连接WSL2及VMware,WSL2安装GUI应用

    一 VScode 连接WSL2 参考文章 巨硬官方文档 知乎大佬教程 知乎大佬教程2 1 开启WSL2 支持 使用管理员权限的 Shell 才能安装 WSL2 按 Win X 找到 Windows PowerShell 管理员 并复制执行命
  • Ubuntu20.04中VSCode配置C++以及分文件编写配置

    网上搜索了很多文章 一直显示找不到自定义的头文件 今天总算捣鼓出来了 参考文章 https www cnblogs com icmzn p 16244665 html https blog csdn net qq 39048131 arti
  • VScode扩展商店不显示插件问题

    VScode扩展商店不显示插件问题 情况一 代理服务器异常 参考文章 https blog csdn net wodebokecsdn article details 89239769 文件 首选项 设置 应用程序 代理服务器 情况二 设备
  • 使用vscode编辑和提交github仓库代码

    写在前面 在github上想删除仓库中的某个文件或文件夹 亦或是重命名操作都很麻烦 这里提供一种vscode的解决方案 在vscode中克隆远程github仓库 然后对代码或文件进行编辑 最后提交即可 就和管理本地文件一样方便 准备工作 下
  • Visual Studio Code 的安装教程和配置C语言环境(详解版)

    最近想装一个VS Code 来写C C 程序 但是看了网上的很多教程发现并不是那么的好 大部分都尝试失败了 摸索了很久找到了一个比较可靠的方法 目录 一 Visual Studio Code 的安装教程 二 接下来就是C语言的环境配置 三
  • 中国太阳能热水器市场营销模式探析与品牌格局调研报告2022版

    中国太阳能热水器市场营销模式探析与品牌格局调研报告2022版 HS HS HS HS HS HS HS HS HS HS HS HS 修订日期 2021年11月 搜索鸿晟信合研究院查看官网更多内容 第一章 太阳能热水器相关概述 1 1 太阳
  • Vscode连接远程服务器(一套配置成功)

    安装远程开发插件Remote Development 1 在商店中搜索Remote Development并安装 2 添加服务器连接配置 点击该选项卡 会进入SSH TARGETS的添加 如下图所示 填写配置信息可在下边操作中查看 修改 想
  • vscode使用手册

    VS Code Visual Studio Code 是一款轻量级 跨平台的源代码编辑器 支持语法高亮 自动补全 调试 Git 版本控制等功能 下面是一些使用 VS Code 的基本操作 安装和启动 在官网上下载并安装 VS Code 打开
  • vscode的Document This插件

    Document This插件 主要针对JavaScript 和 TypeScript 语言生成注释 光标放在函数名上 连续按 两下 Ctrl Alt D description param number x param number y
  • 办公小技巧:VSCode无法安装插件怎么办?

    Visual Studio Code是Microsoft开发的一款开源免费的现代化轻量级代码编辑器 它体积小 启动快 系统内存占用率低非常适合搭建IDE VSCode不仅支持几乎所有主流的开发语言的语法高亮 智能代码补全 自定义热键 括号匹
  • 企业微信登录-前端实现

    企业微信登录 企业微信登录 前端具体实现 下面代码中配置项的字段具体用途说明可以阅读企业微信开发者说明文档 我们通过提供的企业微信登录组件来进行站内登录 下面是我封装的登录组件以及使用方法 weChatLogin vue 封装的组件
  • VSCode『SSH』连接服务器『GUI界面』传输

    前言 最近需要使用实验室的服务器训练带有 GUI 画面的 AI 算法模型 pygame 但是我是使用 SSH 连接的 不能很好的显示模型训练的效果画面 所以下面将会讲解如何实现 SSH 连接传输 Linux GUI 画面的 注 我们没有采用
  • 前后端分离vscode+mysql校园报修维修管理系统nodejs+vue

    本基于nodejs的学校智能网上报修管理系统是根据当前高校网上报修相关的内容实际情况开发的 在系统语言选择上我们使用的nodejs语言 数据库是小巧灵活的MySQL数据库 本系统的开发可以极大的提高学校智能网上报修管理系统的管理效率 开发语
  • VSCode中如何查看EDI报文?

    VSCode是开发人员常用的一款软件 为了降低EDI报文的阅读门槛 知行的开发人员设计了EDI插件 可以在VSCode中下载使用 如何打开一个EDI报文 VSCode EDI插件介绍 EDI插件下载流程 进入VSCode 打开Extensi
  • VSCode 代码高亮 变量类型、函数名、类名没有颜色 - 设置主题即可

    https zhuanlan zhihu com p 630401039 之前应该设置主题了 但不知道为啥C 里面只有 int 有高亮 其他像 cv Mat 函数名 类名都没有颜色 解决方案是重新设置一下主题 File preference

随机推荐

  • ROS 多线程以及OOP编程注意项(1)

    环境配置 Ubuntu20 04ROS Noetic 问题描述 按照往常使用类中回调函数并通过CallbackQueue开启多个Queue时出现回调函数没响应的情况 代码如下 namespace KINE class kine privat
  • 百度 2014 校园招聘 软件研发工程师 笔试题(天津站)

    2013 9 28笔试 xff08 此为回忆版 xff09 一 简答题 xff08 30分 xff09 1 动态链接和静态链接的优缺点 xff08 10分 xff09 2 轮询任务调度和抢占式任务调度的区别 xff08 10分 xff09
  • 【免费送书】说说哪本书曾经让你爱不释手

    编程狗在线 自由的编程学习平台 一本好书带给人的不止于知识收获 xff0c 还会对你的成长有所帮助 xff0c 与你的每次经历产生共鸣 每天读一点 xff0c 坚持不懈 xff0c 你就能成为专业高手 如果你能每两个月读一本好的编程书 xf
  • MySQL 5.6 源码目录结构

    基于MySQL 5 6 26源码 源码目录 xff1a BUILD 构建工程的脚本 client 客户端 cmake cmd line utils 命令行工具 dbug 调试库 Docs 文档 extra 一些相对独立的次要工具 inclu
  • 计算机I/O原理

    cpu通过IO命令控制设备 xff0c cpu对设备的控制仅仅可以到达设备控制器 xff0c 无法直接控制设备 设备无法直接和cpu通信 xff0c 设备控制器通过中断机制向cpu反馈信息 即这个一个模型 CPU IO指令 gt 设备控制器
  • 计算机的I/O端口地址表

    PC的I O端口地址表 xff08 I O端口地址表 xff09 http tieba baidu com f kz 61 16042340 I O端口地址表 PC只用了10位地址线 A0 A9 进行译码 xff0c 其寻址的范围为0H 3
  • 利用pthread进行数组求和

    POSIX thread 简称为pthread xff0c Posix线程是一个 POSIX 标准线程 利用多线程可以提高运算速度 利用pthread进行数组求和的程序如下 xff1a include lt stdio h gt inclu
  • 字符串的全排列程序

    include lt iostream gt include lt cstring gt using namespace std void swap char str int i int j char tmp 61 str i str i
  • Google面试总结

    分享 Google面试总结 来源 xff1a 王冠中的日志 终于把Google的面试给搞完了 xff0c 感觉可以算是Tech Interview的顶峰了 这里主要写一下大概流程和内容 xff0c 给大家以后interview一个参考 G的
  • 【硬件在环Hil联调问题记录1】

    硬件在环Hil联调问题记录1 simulink中 quadprog 函数代码生成解决方案 Carsim加载不同版本Matlab的操作 仿真时各模块的作用 xff1a Simulink xff08 2019b xff09 控制算法 Carsi
  • C++ boost和C++ stl的区别和联系

    C C 43 43 语言的一大特点是其标准库可以用语言自身实现 C 标准库的 strlen strcpy strcmp 系列函数是教学与练习的好题材 xff0c C 43 43 标准库的 complex string vector 则是类
  • 最新(2023.3.17)配置llvm、clang、clangd、clang-tidy方法,极其简单,轻松上手

    Linux 1 我的Linux是Ubuntu22 04 xff0c 首先把软件下载源改成国内的aliyun xff0c 很简单 xff0c 按照我的这个来做就行 点开这个图标 xff0c 然后点击下面这个 在download from那里把
  • Ubuntu 网线直连(开机自动配置ip地址、启动vnc),vnc远程桌面

    sudo ifconfig enp4s0 upsudo ifconfig enp4s0 192 168 1 20 xff08 要和pc机保证在相同网段 xff09 vncserver 2以下为开机启动配置和启动操作如果需要开机自行配制 启动
  • iftop 较全

    iftop nBNP nbsp i nbsp enp2s0 nbsp f dst port 6379 可以使用iftop命令的 f选项来过滤指定的端口 该选项允许您指定BPF过滤器规则 用于仅显示符合规则的流量 例如 以下命令将仅显示目标端
  • 随机生成slam 真值和里程计值的 g2o 文件(python实现)

    生成了slam 里程计的真值和里程计的值 并保存顶点和边为 g2o文件 nbsp 随机生成slam 真值和里程计值的 g2o 文 件 gen test data py import numpy as np import matplotlib
  • 滑膜+pid+上层设计下层平均分配 优化分配 动态载荷分配

    滑膜 43 pid 43 上层设计下层平均分配 优化分配 动态载荷分配 xff0c 分布式电动汽车操稳控制 本研究在matlab simulink建立七自由度轮毂电机驱动汽车模型 xff0c 使用滑膜联合控制以及pid控制实现转向过程中质心
  • 12本Python书籍推荐

    Python是用于各种任务和领域的优秀编程语言之一 Python的用户友好性 xff0c 高级特性以及对简单性和增强代码可读性的强调使其成为全球许多开发人员的理想选择 诸如此类的功能使应用程序开发 xff0c 数据科学 xff0c 人工智能
  • Ubuntu 屏幕翻转90度怎么恢复

    笔记本电脑的 ubuntu 屏幕有时候会无意中90度翻转 xff0c 这时候你只能侧着脸看 xff0c 靠鼠标操作想要恢复是极其尴尬的一件事 xff0c 最快捷的方法就用命令是删除 iio sensor proxy 程序 第一步 Ctrl
  • 使用Python+Opencv从摄像头逐帧读取图片保存在本地

    今天测试的时候 xff0c 遇到了一个问题 xff0c 测试需求是 xff0c 需要把摄像头拍摄的实时视频逐帧率保存下来 经过查阅资料以及网友帮助 xff0c 目前已经完成 记录下来希望可以帮助有需要的朋友 1 思路 使用Python 43
  • vscode 运行C++

    本文先介绍了windows下 VSCODE运行C 43 43 前 xff0c 搭建C 43 43 运行环境的必要步骤 后介绍了tasks json launch json的作用 xff0c 并给出了自己使用的配置方案 最后给出了常见问题的解