VSCode C/C++ 开发环境配置

news/2025/9/23 22:23:58/文章来源:https://www.cnblogs.com/milton/p/19103256

VSCode C/C++ 开发环境配置

VSCode 安装插件

  • C/C++ Extension Pack
    • C/C++
    • C/C++ Themes
    • CMake Tools
  • Makefile Tools
  • CMake

Windows下的环境配置

安装 MSYS2 和 GCC工具链

  • 下载MSYS2安装文件 https://www.msys2.org/
  • 安装到D盘, D:\msys64
  • 将 UCRT64 路径添加到 Windows: D:\msys64\ucrt64\bin\
  • 启动 UCRT64 终端
  • 执行以下命令
# 更新软件库
pacman -Syu
# 安装工具链, 根据提示, 安装需要的 gcc, gdb等
pacman -S --needed base-devel mingw-w64-ucrt-x86_64-toolchain
# 安装opencv
pacman -S mingw-w64-ucrt-x86_64-opencv

VSCode配置

在 Windows 路径中增加 UCRT64 路径后, VSCode 会自动检测到 gcc.exe 的存在, 此时可以

  • 编译当前编辑的C/CPP文件
    • Alt+Shift+F10: 唤出菜单中选择"C/C++ gcc.exe build active file", 注意看下面的明细显示的是否是D:\msys64\ucrt64\bin\gcc.exe, 如果是cpp文件, 选择带g++.exe的选项
    • 如果只是运行标准任务, 不会创建 tasks.json
  • 创建 tasks.json
    • Ctrl+Shift+P: 唤出菜单,输入Task, 选择Tasks: Configure Task, 然后选择"C/C++ gcc.exe build active file"
    • 通过 tasks.json, 可以定制编译选项

启动debug

  • 按 F5, 选择"C/C++ gcc.exe build and debug active file"
  • 默认debug不会创建 launch.json, 如果要创建 launch.json, 在侧栏 Run and Debug 中, 点击 create a launch.json file , 再选择 C++(GDB/LLDB), 在弹出的列表中, 选择 GDB launch, 并在生成的 launch.json 模板中, 输入gdb.exe 路径等参数

配置文件示例

c_cpp_properties.json

compilerPath指向UCRT64编译器, 在includePath中增加对第三方库的引用

{"configurations": [{"name": "Win32","includePath": ["${workspaceFolder}/**","D:/msys64/ucrt64/include/opencv4"],"defines": ["_DEBUG","UNICODE","_UNICODE"],"windowsSdkVersion": "10.0.19041.0","compilerPath": "D:/msys64/ucrt64/bin/g++.exe","cStandard": "c11","cppStandard": "c++11","intelliSenseMode": "gcc-x64"}],"version": 4
}

tasks.json

options是必须的, 路径中的/可以替换为\\

{"version": "2.0.0","tasks": [{"type": "cppbuild","label": "build basic cpp file","command": "D:/msys64/ucrt64/bin/g++.exe","args": ["-fdiagnostics-color=always","-g","${file}","-o","${fileDirname}/${fileBasenameNoExtension}.exe"],"options": {"cwd": "D:/msys64/ucrt64/bin"},"problemMatcher": ["$gcc"],"group": "build","detail": "compiler: D:/msys64/ucrt64/bin/g++.exe"},{"type": "cppbuild","label": "build basic c file","command": "D:/msys64/ucrt64/bin/gcc.exe","args": ["-fdiagnostics-color=always","-g","${file}","-o","${fileDirname}/${fileBasenameNoExtension}.exe"],"options": {"cwd": "D:/msys64/ucrt64/bin"},"problemMatcher": ["$gcc"],"group": "build","detail": "compiler: D:/msys64/ucrt64/bin/gcc.exe"}]
}

如果要编译多个文件, 可以在 args 中指定, 或者用通配符"${fileDirname}/*.cpp"指定所有cpp文件

    "-g","${fileDirname}/line_detection.cpp","${fileDirname}/utils.cpp",//"${fileDirname}/*.cpp","-o","${fileDirname}/build/${fileBasenameNoExtension}.exe",

如果要添加 opencv 库, 需要在args中增加引用

    "-I","D:/msys64/ucrt64/include/opencv4","-lopencv_imgcodecs","-lopencv_core"

launch.json

program指向编译结果, 可以用preLaunchTask指定在debug之前执行编译任务

{"version": "0.2.0","configurations": [{"name": "(gdb) Launch","type": "cppdbg","request": "launch","program": "${workspaceFolder}/${fileBasenameNoExtension}.exe","args": [],"stopAtEntry": false,"cwd": "${fileDirname}","environment": [],"externalConsole": false,"MIMode": "gdb","miDebuggerPath": "D:/msys64/ucrt64/bin/gdb.exe","setupCommands": [{"description": "Enable pretty-printing for gdb","text": "-enable-pretty-printing","ignoreFailures": true},{"description": "Set Disassembly Flavor to Intel","text": "-gdb-set disassembly-flavor intel","ignoreFailures": true}]}]
}

Ubuntu下的环境配置

Ubuntu下因为系统内建了GCC工具链, 如果对版本没有要求直接用默认的就可以

配置文件示例

c_cpp_properties.json

{"configurations": [{"name": "Linux","includePath": ["${workspaceFolder}/**","/usr/include/c++/11","/usr/include/x86_64-linux-gnu/c++/11","/usr/include/opencv4"],"defines": [],"compilerPath": "/usr/bin/gcc","cStandard": "gnu11","cppStandard": "gnu++11","intelliSenseMode": "linux-gcc-x64"}],"version": 4
}

launch.json

{"version": "0.2.0","configurations": [{"name": "C/C++ debug active file","type": "cppdbg","request": "launch","program": "${fileDirname}/build/${fileBasenameNoExtension}","stopAtEntry": true,"cwd": "${fileDirname}","externalConsole": false,"MIMode": "gdb","preLaunchTask": "build active file","miDebuggerPath": "/usr/bin/gdb"}]
}

tasks.json

{// See https://go.microsoft.com/fwlink/?LinkId=733558// for the documentation about the tasks.json format"version": "2.0.0","tasks": [{"type": "cppbuild","label": "build active file","command": "/usr/bin/g++","args": ["-g","${file}","-o","${fileDirname}/build/${fileBasenameNoExtension}","-I", "/usr/include/opencv4","-l", "opencv_core","-l", "opencv_imgcodecs","-l", "opencv_videoio","-l", "opencv_imgproc","-l", "opencv_photo","-l", "opencv_xphoto",]}]
}

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

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

相关文章

做网站买流量网站线框图

前言众所周知, 现在的 Spring 框架已经成为构建企业级 Java 应用事实上的标准了,众多的企业项目都构建在 Spring 项目及其子项目之上,特别是 Java Web 项目。Spring 的两个核心概念是 IoC(控制反转)和 AOP(面向切面编程)。想了解 Spring 的工…

南阳网站排名优化费用wordpress主题 简洁

文章目录 java整合农行支付1:业务需求了解2:第三方App接入农行支付流程2.1 java 集成农行依赖2.2 java配置农行支付相关证书信息2.2.1:首先我们要配置ConfigSource 文件2.2.2: 配置TrustMerchant 文件信息3:接入农行支付等相关api接口java整合农行支付 技术背景:idea+jd…

公司建设网站算入什么会计科目修改wordpress wp-admin

~~ 转载于:https://www.cnblogs.com/agllero/p/4533848.html

网站开发团队如何接活自己做网站可以上传软件

天池竞赛-津南数字制造算法挑战赛【赛场二】解决方案分享 一、前言 竞赛页面 团队名BugFlow,最终排名35/2157 虽然成绩一般,但是作为一支目标检测领域的新手队伍,仅仅有一块1070显卡,从零开始拿到这个排名,也算有一…

自做闪图网站网站建设需要什么材料

本是青灯不归客,却因浊酒恋红尘 一,基本使用 关于Room数据库的基本使用,请参考文章Android--Jetpack--数据库Room详解一-CSDN博客 二,Room与ViewModle,LiveData的结合使用 LiveData与ViewModle的使用,请参考文章Andr…

网站建设的心得与体会茂名市建设局网站

📖第4章 Android高德地图绘制标记点Marker ✅绘制默认 Marker✅绘制多个Marker✅绘制自定义 Marker✅Marker点击事件✅Marker动画效果✅Marker拖拽事件✅绘制默认 Infowindow🚩隐藏InfoWindow 弹框 ✅绘制自定义 InfoWindow🚩实现 InfoWindow…

婚恋咨询网站运营wordpress 外跳

2019独角兽企业重金招聘Python工程师标准>>> 用java实现对纯真IP数据库的查询,首先到网上下载QQwry.da文件,读取代码如下:1.IP记录实体类 package com.guess.tools; /** * 一条IP范围记录,不仅包括国家和区域&#xff…

设计网站建设长沙必去十大网红地方

1 ChatGPT每日一题:PCB布线,高速信号线走直角的后果 问题:PCB布线,高速信号线走直角的后果 ChatGPT:对于高速信号线来说,最好避免使用直角布线。直角布线会引入反射和信号损耗,从而导致信号完…

vite静态资源处理

/*** 获取完整解析静态资源的url,如图片、svg等* @param {string} path 静态资源在在assets中的地址,例如:images/pubilc/logo.png* @returns {string}*/ export function getStaticUrl(path: string | undefined):…

洛谷B4040 [GESP202409 四级] 黑白方块 题解

原题传送门 前言 天啊!上一周刚刚考完 \(CSP-J\) ,这一周就得去考 \(GESP\) 4级 (是的,你没有听错,我3级过了!) 所以,做了一道简单的题之后,我又来写题解了! (仍然是WA++) 题目解析 哇,这题可真长啊!什…

SerpApi:一站式搜索引擎数据抓取API完全指南

本文详细介绍SerpApi这一实时搜索引擎数据抓取API的技术特性,包括GET请求示例、多语言库集成、JSON结构化数据输出、极速模式配置以及地理位置搜索等核心功能,帮助开发者快速集成搜索引擎数据到应用程序中。SerpApi:…

网站建设过程中什么最重要百度竞价怎么开户

1、 session持久化是什么? web服务器把 session中存储的属性存储到本地磁盘或数据库中; 2、为什么需要持久化? 因为 session是服务器维护会话状态的对象,即便客户端关闭连接或客户端长时间没有访问,服务器还依然存储…

网站备案中更名菜单设计制作模板免费

1. 获取时间 时间是个重要的编程元素,可用于计算间隔、同步服务器以及控制超时。 计算机中的时间分为以下两种形式: 墙钟时间:以12或24小时为周期不断重复,不同的地区和季节会因时区或夏令时而异。单调时间:从一个时…

中山公司网站建设小型企业网站建设报告

一. Windows下为PowerShell/CMD/Git设置代理 —————————————————————————————————————————————————————— 二. [WinError 10061] 由于目标计算机积极拒绝,无法连接。 keyerror:192。 HTTP Error 403: Forbidd…

海丰网站建设wordpress如何置顶

我一开始的想法是:后序遍历是左右根,那么第一个数小于第二个数,第二个数大于第三个数,然后从第三个数开始又循环,显然错了,因为我这种是理想情况,是一个满二叉树。正确的解法是: class Solutio…

工信部网站备案系统登录机械网站建设公司

目录 一、了解什么是泛性编程 二、模版 1.函数模版 1.1 函数模板概念 1.2 函数模板格式 1.3 函数模板的原理 1.4 函数模板的实例化 1.5 模板参数的匹配原则 2.类模板 2.1 类模板的定义格式 2.2 类模板的实例化 3. 非类型模板参数 4. 模板的特化 4.1 概念 4.2 …

网站建设的价重庆网站建设团队

Yocto .bb 文件字段解析 本文详细讲解了 Yocto .bb 文件中各字段的作用和用法,包括 SECTION、SRC_URI、SUMMARY 等,旨在帮助开发者更好地理解和使用 Yocto 构建系统。 目录 1. SECTION 字段 1.1 SECTION 的作用1.2 SECTION 的用法1.3 如何使用 SECTIO…

人工智能ai写作网站免费asp net网站开发语言的特点

这里小程序开发中容易犯的错误-1写自定义目录标题 给客户做一个程序。需要在页面加载的时候在onLoad(options){}中加载定义好的函数,代码如下 onLoad(options) {get_week_()},运行时老报错 后来修改为正确的代码 onLoad(options) {this.get_week_()//必须加this},再…

wordpress建站教程简书建筑网站资料

分享88个表单按钮JS特效,总有一款适合您 88个表单按钮JS特效下载链接:https://pan.baidu.com/s/1v-qcl8bv2kxZ8a98Xo9UAg?pwd8888 提取码:8888 Python采集代码下载链接:采集代码.zip - 蓝奏云 学习知识费力气,…