VSCode纯手工配置C/C++项目

news2025/4/6 11:40:02

面向大二同学不想用Visual Studio的需求,探索Visual Studio Code平台上单纯利用C/C++纯手动配置的方法,实现Release版本和Debug版本的调试和运行,并指定版本进行调试。

前置依赖项:

  • C/C++1 VSCode扩展
  • 配置文件列表,将下面的代码放置到对应目录即可
图 1-1 配置文件列表
  • 添加源文件,main.cpp中一定要有main函数,不然你得更改配置文件
图 1-2 源文件列表
  • 项目启动,点击启动即可
图1-3 启动项
  • cl.exe无法启动问题
    1.使用脚本打开vscode目录2
    2.使用配置文件配置3
      "windows": {
    	 "options": {
     		"shell": {
        		 "executable": "cmd.exe",
         	"args": [
           	"call",
           	"\"D:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/Common7/Tools/VsDevCmd.bat\"", //记得自定义> 自己的VsDevCmd环境
           	"&&"
         	]
          }
       }
    

c_cpp_properties.json

{
  "configurations": [
    {
      "name": "windows-msvc-x64",
      // 头文件目录后面有需要自行更改
      "includePath": ["${workspaceFolder}/**"],
      // 自定义编译器路径
      "compilerPath": "D:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Tools/MSVC/14.29.30133/bin/Hostx64/x64/cl.exe",
      "cStandard": "c11",
      "cppStandard": "c++11",
      "intelliSenseMode": "windows-msvc-x64",
      "compilerArgs": [""],
      "defines": ["UNICODE", "_UNICODE", "_CRT_SECURE_NO_WARNINGS"]
    }
  ],
  "version": 4
}

tasks.json

{
  "version": "2.0.0",
  // Windows启动项目预设值
  "windows": {
    "options": {
      "shell": {
        "executable": "cmd.exe",
        "args": [
          "call",
          "\"D:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/Common7/Tools/VsDevCmd.bat\"", //记得自定义自己的VsDevCmd环境
          "&&"
        ]
      }
    }
  },
  "tasks": [
    // Debug版本
 	{
      "type": "shell",
      "label": "C/C++:Debug",
      "command": "cl.exe",
      "args": [
        "/Zi",
        "/EHsc",
        "/nologo",
        "/Fe${workspaceFolder}\\build\\Debug\\${fileBasenameNoExtension}.exe",
        "${workspaceFolder}\\source\\*.cpp",
        "${workspaceFolder}\\main.cpp"
      ],
      "options": {
        "cwd": "${workspaceFolder}\\build\\Debug"
      },
      "problemMatcher": ["$msCompile"],
      "group": {
        "kind": "build",
        "isDefault": true
      },
      "detail": "Task generated by Debugger."
    }
    // Release版本
    {
      "type": "shell",
      "label": "C/C++:Release",
      "command": "cl.exe",
      "args": [
        "/Zi",
        "/EHsc",
        "/nologo",
        "/Fe${workspaceFolder}\\build\\Release\\${fileBasenameNoExtension}.exe",
        "/DNDEBUG",
        "${file}",
        "user32.lib",
        "kernel32.lib",
        "shell32.lib"
      ],
      "options": {
        "cwd": "${workspaceFolder}\\build\\Release"
      },
      "problemMatcher": ["$msCompile"],
      "group": {
        "kind": "build",
        "isDefault": true
      },
      "detail": "Task generated by Debugger."
    }
  ]
}

launch.json

{
  "version": "0.2.0",
  "configurations": [
    {
      // 对应cl.exe
      "name": "msvc",
      "type": "cppvsdbg",
      "request": "launch",
      "program": "${workspaceFolder}\\build\\Debug\\${fileBasenameNoExtension}.exe",
      "args": [],
      "stopAtEntry": false,
      "environment": [],
      "console": "integratedTerminal",
      "preLaunchTask": "C/C++:Debug",
      "logging": {
        // 用于消除PDB文件找不到打不开问题,来自于https://none53.hatenablog.com/entry/2019/11/28/vsCode_Cannot_find_or_open_the_PDB_file.
        "moduleLoad": false
      }
    }
  ]
}

  1. https://code.visualstudio.com/docs/languages/cpp ↩︎

  2. https://blog.csdn.net/lichen849/article/details/109626205 ↩︎

  3. https://code.visualstudio.com/docs/cpp/config-msvc#_run-vs-code-outside-the-developer-command-prompt ↩︎

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/434140.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

设计模式-1

1,设计模式概述 1.1 软件设计模式的产生背景 "设计模式"最初并不是出现在软件设计中,而是被用于建筑领域的设计中。 1977年美国著名建筑大师、加利福尼亚大学伯克利分校环境结构中心主任克里斯托夫亚历山大(Christopher Alexand…

设计模式-行为型模式之命令模式

行为型模式 行为型模式(Behavioral Pattern)是对在 不同的对象之间 划分责任和 算法的抽象化。 行为型模式不仅仅关注类和对象的结构,而且 重点关注它们之间的相互作用。 通过行为型模式,可以 更加清晰地划分类与对象的职责,并研究系统在运行…

Spring入门案例--bean基础配置

bean基础配置(id与class) 对于bean的基础配置&#xff0c;在前面的案例中已经使用过: 1 <bean id"" class""/> 其中&#xff0c;bean标签的功能、使用方式以及id和class属性的作用&#xff0c;我们通过一张图来描述下 这其中需要大家重点掌握的…

少儿编程 电子学会图形化编程等级考试Scratch二级真题解析(选择题)2022年9月

2022年9月scratch编程等级考试二级真题 选择题(共25题,每题2分,共50分) 1、数列:1,2,3,4,6,9,13,19,28,...的下一项是多少 A、37 B、39 C、41 D、47 答案:C 考点分析:考查观察能力和逻辑推理能力,从前面数字可以观察到一些规律: 第4个数字,是由前面…

C++初阶—string类(3)模拟实现

目录 0.前言 1 .构造函数—析构函数—[]重载实现 2.深浅拷贝问题 2.1 浅拷贝 2.2 深拷贝 2.3写时拷贝 3.拷贝函数——赋值重载传统及现代写法 4.迭代器实现 5.reserve、push_back、append、运算符重载 6.insert、erase实现 7.find、关系运算符、流插入流提取等的实现…

学了半个月js 感觉一点都不会 ,怎么办?

前言 结合你的提问的具体情况&#xff0c;我想说如果你不是天才&#xff0c;那仅仅只靠半个月的学习就想掌握js那是绝无可能的&#xff0c;至于你说的感觉一点都不会在我看来是夸大了&#xff0c;极大可能是因为你没有去整合回顾知识&#xff0c;脑里的知识点相当的混乱&#…

Faster-RCNN代码解读7:主要文件解读-下

Faster-RCNN代码解读7&#xff1a;主要文件解读-下 前言 ​ 因为最近打算尝试一下Faster-RCNN的复现&#xff0c;不要多想&#xff0c;我还没有厉害到可以一个人复现所有代码。所以&#xff0c;是参考别人的代码&#xff0c;进行自己的解读。 ​ 代码来自于B站的UP主&#xff…

Chapter12-主从同步机制

12.1 同步属性信息 Slave 需要和 Master 同步的不只 是 消息本身&#xff0c;一些元数据信息也需要 同步&#xff0c;比如 TopicConfig 信息 、 ConsumerOffset 信息 、 DelayOffset 和SubscriptionGroupConfig 信息 。 Broker 在启动的时候&#xff0c;判断自己的角色是否是Sl…

DPDK简介

什么是DPDK 对于用户来说&#xff0c;它可能是一个性能出色的包数据处理加速软件库&#xff1b;对于开发者来说&#xff0c;它可能是一个实践包处理新想法的创新工场&#xff1b;对于性能调优者来说&#xff0c;它可能又是一个绝佳的成果分享平台。 DPDK用软件的方式在通用多…

使用git clone 拉去git仓库地址时报错 Failed to connect to github.com port 443: Timed out

问题描述 最近发现访问不了GitHub 使用ping 连接失败 ping github.com甚至连GitHub中的项目拉取不下来&#xff0c;报错信息如下&#xff1a; fatal: unable to access ‘https://github.com/josdejong/mathjs.git/’: Failed to connect to github.com port 443: Timed out …

在IDE中使用Bito - 一个不需要VPN就可以使用的chatgpt

文章目录 在IDE中使用Bito什么是Bito为什么要使用BitoBito可以做什么如何在IDE中安装Bito使用Bito 在IDE中使用Bito 什么是Bito 用他自己的介绍就是&#xff1a; Bito’s AI helps developers dramatically accelerate their impact. It’s a Swiss Army knife of capabilit…

Springboot如何启动内嵌tomcat

只需要引入如下依赖即可&#xff1a; 1.首先判断容器的类型&#xff0c;这里是servlet类型 org.springframework.boot.WebApplicationType#deduceFromClasspath 2.根据容器类型创建容器&#xff1a; org.springframework.boot.SpringApplication#createApplicationContext …

单链表面试题思路分享二

单链表面试题思路分享二 前言1.合并两个有序链表1.1 审题1.2 代码实现1.3 代码优化 2. 链表的分割2.1 审题2.2 代码实现 3. 链表的回文结构3.1 审题3.2 代码实现 4. 链表相交4.1 审题4.2 代码实现4.3 方法二的实现 5. 总结 前言 我们紧接上文单链表面试题分享一来看看本章我要分…

解决PySide6/PyQT的界面卡死问题(PySide6/PyQT多线程

前言 问&#xff1a;在使用 PySide6 时候&#xff0c;会出现应用程序卡死的问题。 答&#xff1a;为什么会出现这个问题呢&#xff1f;PySide6 应用程序是基于事件驱动的&#xff0c;主线程负责处理GUI事件。如果有耗时的操作任务&#xff0c;GUI 事件将被阻塞&#xff0c;应用…

发送封包协议实现XXZ批量秒分解装备

通过发送封包&#xff0c;我们可以让一些反复的枯燥的行为变的简单&#xff0c;高效。 比如XXZ的萃取装备&#xff0c;我们可以一瞬间萃取大量的装备&#xff0c;而省去读条的过程。 我们来萃取一下看看效果 手动萃取是有读条的&#xff0c;那么如果很多装备的话&#xff0c;…

OAuth2.0 实践 Spring Authorization Server 搭建授权服务器 + Resource + Client

title: OAuth2.0 实践 Spring Authorization Server 搭建授权服务器 Resource Client date: 2023-03-27 01:41:26 tags: OAuth2.0Spring Authorization Server categories:开发实践 cover: https://cover.png feature: false 1. 授权服务器 目前 Spring 生态中的 OAuth2 授…

ArcGISPRO 和 ChatGPT集成思路

“我们如何一起使用 ArcGIS PRO 和 ChatGPT&#xff1f;”ArcGIS Pro 是一款功能强大的桌面 GIS 软件&#xff0c;用于制图、空间分析和数据管理。ChatGPT 是一种 AI 语言模型&#xff0c;可用于自然语言处理任务&#xff0c;例如文本生成和响应。 结合使用 ArcGIS Pro 和 Chat…

工业互联网业务知识

文章目录 背景第四次工业革命带动制造业产业升级主要工业大国不同路径 架构ISA95体系架构变革趋势基础通用架构数据采集平台 工业互联网应用软件工业互联网全要素连接产品视角&#xff1a;产销服务企业的业务流程企业数字化改造&#xff1a;车间级全要素连接 工业互联网的产品体…

Perl检查环境配置

最近部署Perl环境&#xff0c;但是不确定安装完成&#xff0c;看到有个内置监测的&#xff0c;记录下 perl bin/otrs.CheckModules.pl

数据类型及变量的定义、使用和注意事项

数据类型 计算机存储单元 变量的定义格式&#xff1a; 数据类型 变量名数据值; 我们知道计算机是可以用来存储数据的&#xff0c;但是无论是内存还是硬盘&#xff0c;计算机存储设备的最小信息单元叫“位( bit ) "&#xff0c;我们又称之为“比特位”&#xff0c;通常用…