CMake在Windows环境下Visual Studio Code的使用

news2025/4/10 17:36:07

1,安装下载

地址:Visual Studio Code - Code Editing. Redefined

双击安装

选择安装路径

可勾选微软的AI工具

2,环境介绍

2.1 ,界面介绍

2.2中文包的安装

下载中文简体

汉化后的界面

2.3 配置C/C++环境

VSCode安装好之后,我们还是要知道,VSCode毕竟是一个高级的编辑器,只能用来写C/C++代码,不能直接编译代码。
所以,如果我们要能使用VSCode搭建C/C++的编译和调试环境,还必须有编译器使用。
为了方便,我们就使用MinGw-w64MinGw-w64移植到windows平台的一个gcc编译器,使用起来也是非常方便的。
下面我们就演示怎么下载和配置MinGw-w64

地址:https://sourceforge.net/projects/mingw-w64/

解压后我们会得到一个mingw文件夹

将其复制到你需要的位置

双击打开并进入bin文件夹内,这里有我们的gcc(C语言编译器)、g++(C++编译器),gdb调试器(可以使用断点调试)等

这里说gcc是C语言编辑器,g++是C++的编译器其实不太准确,因为gcc也可以编译C++,但是需要自己配置链接C++的库,g++默认链接了C++的库。

复制bin路径

!这样我们的准备环境就配置好了
我们可以使用一些命令来测试一下,按win+r输入cmd打开终端
以此输入

2.4  

安装vscode并安装一下必备的插件

vscode安装大家应该都会,如果通过浏览器下载vscode速度比较慢的话,可以复制下载链接放到迅雷里面去下载

安装必备插件
我们需要安装两个插件

  1. 安装C/C++插件:

3  配置

配置阶段我提供了两类配置方式,大家按需选择即可

第一类 使用vscode插件进行配置
这类配置方法一般来说不需要自己动手配置内容,只需要安装一下插件即可。

优点:使用简单,基本上拿来就可以使用,比较适合C/C++初学者(因为老师们貌似上来都是直接教C/C++语法,而不是C/C++编译器、C/C++标准、C/C++项目构成等一些C/C++基本内容)以及一些不需要复杂功能的同学。

缺点:可扩展性差(使用插件基本上是用插件配置好的命令去编译运行程序,如果你需要改或扩展一些配置的话,你得对一些命令很熟悉,当然这不是重点,重点是使用插件配置一般只能有一个有效的配置项,例如:如果你想从调试模式切换到编译模式,你得手动更改一下配置文件,而不是像大部分编辑器那样,选择一个配置去运行)

样例一:使用run code插件

因为插件配置实质上是用它提供的指令进行编译执行,因此无法直接使用断点调试功能,需要对配置进行一定的更改

这里以使用run code为例,在扩展里搜索code runner这个插件并安装

程序是在下面的输出栏中运行的,是无法输入内容的,所以我们还需要改一些内容,以便能够正常输入内容。

找到code runner扩展,点击扩展设置,找到Run In Terminal并勾上,这样就能够正常地输入内容了。

第二类 自定义配置

这类配置方法要自己手写配置内容,比较复杂,但可扩展性强
优点:可扩展性强
缺点:配置比较复杂、需要一定的知识储备

样例一:使用windows启动,让编译的文件放在同目录下的build文件夹中,并在黑窗(cmd)中运行
在配置之前,我们需要先创建一个.cpp文件,这里我创建了一个Test文件夹,并写了一个hello world。

请注意,一切的配置都要从一个cpp文件的编辑界面开始,否则vscode的提示可能会不太一样

样例一的配置方式因为本质上就是直接编译运行,因此无法使用断点调试功能

第一步:配置基本环境
按下ctrl + shift + p打开命令面板,输入C/C++,找到C/C++编辑配置(UI)打开

你可以在这个页面中选择编译器,更改C/C++标准,还可以更改IntelliSense 模式

PS:IntelliSense 模式和文本解析有关,如果你选择的IntelliSense模式和你的编译器不匹配,那么会报错,这就会引起例如写代码的时候没有提示、编辑器说代码正确、编译的时候却不正确等问题

这里可以选择你需要的C/C++标准

配置的内容会自动写入.vscode文件夹中的c_cpp_properties.json文件中。

这是我的c_cpp_properties.json文件内容

{
    "configurations": [
        {
            "name": "Win32",
            "includePath": [
                "${workspaceFolder}/**"
            ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "_UNICODE"
            ],
            "compilerPath": "F:/C++Development/mingw-w64/13.1.0/bin/g++.exe",
            "cStandard": "c17",
            "cppStandard": "gnu++17",
            "intelliSenseMode": "windows-gcc-x64"
        }
    ],
    "version": 4
}

第二步:配置task编译任务

按下ctrl + shift + p打开命令面板,输入task,找到 任务:配置任务 打开。

这里,介绍一下文件内需要注意的配置项

这是我的task.json中的配置内容

{
	"version": "2.0.0",
	"tasks": [
		{
			"type": "cppbuild",
			"label": "C/C++: g++.exe 生成活动文件",
			"command": "E:/Microsoft VS Code/mingw64/bin/g++.exe",
			"args": [
				"-fdiagnostics-color=always",
				// 这个命令的作用是转化成GBK编码,可以防止终端中出现乱码
                // 乱码问题原因:终端编码和vscode编码不一致。
                // 国内大部分电脑终端编码默认是gbk,而vscode编码默认是utf-8,所以会出现问题乱码问题。
                // 加上这个命令后先转化为gbk编码后编译,就不会出现乱码了。
				// "-fexec-charset=GBK",
				"-g",
				"${file}", // 如果要多文件编译,改成 "${fileDirname}\\*.c*" 可以把c和cpp文件都作为cpp文件编译。
				"-o",
				// 这里加了一个build,让编译后的程序在同目录下的build文件夹中
				"${fileDirname}\\${fileBasenameNoExtension}.exe"
			],
			"options": {
				"cwd": "E:/Microsoft VS Code/mingw64/bin"
			},
			"problemMatcher": [
				"$gcc"
			],
			"group": "build",
			"detail": "编译器: E:/Microsoft VS Code/mingw64/bin/g++.exe"
		}
	]
}

第三步:配置launch.json启动任务

因为现在的C/C++插件不支持通过命令面板创建任务,所以我们需要手动建一个launch.json文件

建完后打开,我们会发现右下角有一个添加配置

选择windows启动

{
    "configurations": [
        
        {
            "name": "(Windows) 启动",
            "type": "cppvsdbg",
            "request": "launch",
            // 这项是启动的程序位置,把tasks.json中的生成文件的路径复制粘贴过来就可以了
            "program": "${fileDirname}\\build\\${fileBasenameNoExtension}.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${fileDirname}",
            "environment": [],
            // 这项改为integratedTerminal,就和code runner一样是在vscode内置终端中运行了
            "console": "externalTerminal"
             // 这一项一开始没有,要自己写,代表启动前先执行的编译任务,把tasks.json中的label复制粘贴过来就可以了
        }

    ]
}

样例二:使用gdb启动,让编译的文件放在同目录下的build文件夹中,并在vscode中运行(可以使用断点调试)


样例二使用了gdb调试器,所以能使用vscode的断点调试功能。

样例二与样例一稍作更改的地方是launch启动任务和task编译任务,因此就不配图演示了,只需要对照有注释的地方进行更改即可。

task编译任务

这是我的编译任务:

{
	"version": "2.0.0",
	"tasks": [
		{
			"type": "cppbuild",
			"label": "C/C++: g++.exe 生成活动文件",
			"command": "E:/Microsoft VS Code/mingw64/bin/g++.exe",
			"args": [
				"-fdiagnostics-color=always",
				// 这个命令的作用是转化成GBK编码,可以防止终端中出现乱码
                // 乱码问题原因:终端编码和vscode编码不一致。
                // 国内大部分电脑终端编码默认是gbk,而vscode编码默认是utf-8,所以会出现问题乱码问题。
                // 加上这个命令后先转化为gbk编码后编译,就不会出现乱码了。
				"-fexec-charset=GBK",
				"-g",
				"${file}", // 如果要多文件编译,改成 "${fileDirname}\\*.c*" 可以把c和cpp文件都作为cpp文件编译。
				"-o",
				// 这里加了一个build,让编译后的程序在同目录下的build文件夹中
				"${fileDirname}\\build\\main.exe"
			],
			"options": {
				"cwd": "E:/Microsoft VS Code/mingw64/bin"
			},
			"problemMatcher": [
				"$gcc"
			],
			"group": "build",
			"detail": "编译器: E:/Microsoft VS Code/mingw64/bin/g++.exe"
		}
	]
}

launch调试任务

注意:如果你不是copy这里给出的代码,而是自己像上文一样点击添加配置然后修改,请选择gdb启动而不是windows启动。

{
    "configurations": [
    {
        "name": "(gdb) 启动", // 调试任务的名称,改一个你想要的
        "type": "cppdbg",
        "request": "launch",
        "program": "${fileDirname}\\build\\main.exe",  // 入口程序的位置,和task任务生成的程序位置相同
        "args": [],
        "stopAtEntry": false,
        "cwd": "${fileDirname}",
        "environment": [],
        "externalConsole": false,
        "MIMode": "gdb",
        "miDebuggerPath": "E:/Microsoft VS Code/mingw64/bin/gdb.exe", // gdb调试器的位置,和gcc、g++在一个目录下  
        "setupCommands": [
            {
                "description": "为 gdb 启用整齐打印",
                "text": "-enable-pretty-printing",
                "ignoreFailures": true
            },
            {
                "description": "将反汇编风格设置为 Intel",
                "text": "-gdb-set disassembly-flavor intel",
                "ignoreFailures": true
            }
        ],
        "preLaunchTask": "C++调试"  // 启动前调用编译任务
    }
    ]
}

常见问题

Q:终端出现乱码怎么办?

A:在编译的时候加上"–exec-charset=GBK",具体可以看本教程的示例,两类配置方式中都有讲解

Q:在第二种配置方式中,选择task任务时,没有g++、gcc选项怎么办?

A:copy教程中的配置,然后对照图片说明进行更改。

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

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

相关文章

注意力机制在大语言模型中的原理与实现总结

注意力机制在大语言模型中的原理与实现总结 1. 章节介绍 在大语言模型的学习中,理解注意力机制至关重要。本章节旨在深入剖析注意力机制的原理及其在大语言模型中的应用,为构建和优化大语言模型提供理论与实践基础。通过回顾神经网络基础及传统架构的局…

大模型学习三:DeepSeek R1蒸馏模型组ollama调用流程

一、说明 目前DeepSeek R1及其蒸馏模型均支持使用ollama进行调用,可以在模型主页查看调用情况 deepseek-r1https://ollama.com/library/deepseek-r1 显存需求 ,我们显存是16G,可以玩好几个 二、以14B模型演示 1、安装ollama curl -fsSL htt…

RAGFlow部署与使用介绍-深度文档理解和检索增强生成

ragflow部署与使用教程-智能文档处理与知识管理的创新引擎 1. ragflow简介 ​ RAGFlow作为新一代智能文档处理平台,深度融合检索增强生成(RAG)技术与自动化工作流引擎,为企业级知识管理提供全栈解决方案。通过结合多模态解析、语…

【AI赋能:58招聘数据的深度剖析之旅】

影刀出鞘,抓取数据 在当今数字化时代,数据分析已成为企业决策和发展的关键驱动力。而获取高质量的数据则是数据分析的首要任务。在这个信息爆炸的时代,网络上蕴含着海量的数据,其中招聘网站的数据对于人力资源分析、市场趋势研究…

几何法证明卡特兰数_栈混洗

模型&#xff1a; 考虑从坐标原点 (0, 0) 到点 (n, n) 的路径&#xff0c;要求路径只能向右&#xff08;x 方向&#xff09;或向上&#xff08;y 方向&#xff09;移动&#xff0c;并且路径不能越过直线 y x&#xff08;即始终满足 y< x &#xff09;。这样的路径数量就是…

Kafka的安装与使用(windows下python使用等)

一、下载 可以去官网下载&#xff1a;https://kafka.apache.org/downloads 版本可选择&#xff0c;建议下载比较新的&#xff0c;新版本里面自带zookeeper 二、安装 创建一个目录&#xff0c;此处是D:\kafka&#xff0c;将文件放进去解压 如果文件后缀是gz&#xff0c;解压…

数据结构初阶: 顺序表的增删查改

顺序表 概念 顺序表是⽤⼀段物理地址连续的存储单元依次存储数据元素的线性结构&#xff0c;⼀般情况下采⽤数组存储。如图1&#xff1a; 顺序表和数组有什么区别&#xff1f; 顺序表的底层是用数组实现的&#xff0c;是对数组的封装&#xff0c;实现了增删查改等接口。 分…

详解AI采集框架Crawl4AI,打造智能网络爬虫

大家好&#xff0c;Crawl4AI作为开源Python库&#xff0c;专门用来简化网页爬取和数据提取的工作。它不仅功能强大、灵活&#xff0c;而且全异步的设计让处理速度更快&#xff0c;稳定性更好。无论是构建AI项目还是提升语言模型的性能&#xff0c;Crawl4AI都能帮您简化工作流程…

【爬虫开发】爬虫开发从0到1全知识教程第14篇:scrapy爬虫框架,介绍【附代码文档】

本教程的知识点为&#xff1a;爬虫概要 爬虫基础 爬虫概述 知识点&#xff1a; 1. 爬虫的概念 requests模块 requests模块 知识点&#xff1a; 1. requests模块介绍 1.1 requests模块的作用&#xff1a; 数据提取概要 数据提取概述 知识点 1. 响应内容的分类 知识点&#xff1a…

SQLark:一款国产免费数据库开发和管理工具

SQLark&#xff08;百灵连接&#xff09;是一款面向信创应用开发者的数据库开发和管理工具&#xff0c;用于快速查询、创建和管理不同类型的数据库系统&#xff0c;目前可以支持达梦数据库、Oracle 以及 MySQL。 对象管理 SQLark 支持丰富的数据库对象管理功能&#xff0c;包括…

防爆对讲机VS非防爆对讲机,如何选择?

在通信设备的广阔市场中&#xff0c;对讲机以其高效、便捷的特点&#xff0c;成为众多行业不可或缺的沟通工具。而面对防爆对讲机与非防爆对讲机&#xff0c;许多用户常常陷入选择困境。究竟该如何抉择&#xff0c;且听我为您细细道来。 防爆对讲机&#xff0c;专为危险作业场…

微信小程序开发:开发实践

微信小程序开发实践研究 摘要 随着移动互联网的迅猛发展&#xff0c;微信小程序作为一种轻量化、无需安装的应用形式&#xff0c;逐渐成为开发者和用户的首选。本文以“个人名片”小程序为例&#xff0c;详细阐述了微信小程序的开发流程&#xff0c;包括需求分析、项目规划、…

操作 Office Excel 文档类库Excelize

Excelize 是 Go 语言编写的一个用来操作 Office Excel 文档类库&#xff0c;基于 ECMA-376 OOXML 技术标准。可以使用它来读取、写入 XLSX 文件&#xff0c;相比较其他的开源类库&#xff0c;Excelize 支持操作带有数据透视表、切片器、图表与图片的 Excel 并支持向 Excel 中插…

青铜与信隼的史诗——TCP与UDP的千年博弈

点击下面图片带您领略全新的嵌入式学习路线 &#x1f525;爆款热榜 88万阅读 1.6万收藏 第一章 契约之匣与自由之羽 熔岩尚未冷却的铸造台上&#xff0c;初代信使长欧诺弥亚将液态秘银倒入双生模具。左侧模具刻着交握的青铜手掌&#xff0c;右侧则是展开的隼翼纹章。当星辰…

「青牛科技」GC5849 12V三相无感正弦波电机驱动芯片

芯片描述&#xff1a; • 4 &#xff5e; 20V 工作电压&#xff0c; 30V 最大耐压 • 驱动峰值电流 2.0A &#xff0c;连续电流 800mA 以内 • 芯片内阻&#xff1a; 900mΩ &#xff08;上桥 下桥&#xff09; • eSOP-8 封装&#xff0c;底部 ePAD 散热&#xff0c;引…

Java基础之反射的基本使用

简介 在运行状态中&#xff0c;对于任意一个类&#xff0c;都能够知道这个类的所有属性和方法&#xff1b;对于任意一个对象&#xff0c;都能够调用它的任意属性和方法&#xff1b;这种动态获取信息以及动态调用对象方法的功能称为Java语言的反射机制。反射让Java成为了一门动…

大语言模型中的嵌入模型

本教程将拆解什么是嵌入模型、为什么它们在NLP中如此重要,并提供一个简单的Python实战示例。 分词器将原始文本转换为token和ID,而嵌入模型则将这些ID映射为密集向量表示。二者合力为LLMs的语义理解提供动力。图片来源:[https://tzamtzis.gr/2024/coding/tokenization-by-an…

【从零实现Json-Rpc框架】- 项目实现 - 服务端主题实现及整体封装

&#x1f4e2;博客主页&#xff1a;https://blog.csdn.net/2301_779549673 &#x1f4e2;博客仓库&#xff1a;https://gitee.com/JohnKingW/linux_test/tree/master/lesson &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01; &…

开源的 LLM 应用开发平台Dify的安装和使用

文章目录 前提环境应用安装deocker desktop镜像源配置Dify简介Dify本地docker安装Dify安装ollama插件Dify安装硅基流动插件简单应用练习进阶应用练习数据库图像检索与展示助手echart助手可视化 前提环境 Windows环境 docker desktop魔法环境&#xff1a;访问Dify项目ollama电脑…

从零构建大语言模型全栈开发指南:第五部分:行业应用与前沿探索-5.1.2行业落地挑战:算力成本与数据隐私解决方案

👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 从零构建大语言模型全栈开发指南-第五部分:行业应用与前沿探索5.1.2 行业落地挑战:算力成本与数据隐私解决方案1. 算力成本挑战与优化策略1.1 算力成本的核心问题1.2 算力优化技术方案2. 数据隐私挑战…