VSCode中使用CMake管理

使用 CMake 配置 Visual Studio Code (VSCode) 项目是许多 C++ 开发者的常见需求。下面我将详细介绍在 VSCode 中使用 CMake 的步骤和最佳实践。

前提条件

  1. 安装 VSCode:如果还未安装,请先前往 VSCode 下载页面下载安装。

  2. CMake:安装 CMake 工具。可以通过以下链接下载:CMake Downloads

  3. 编译器:为目标平台安装合适的编译器。比如在 Windows 上使用 MinGW 或 MSVC,在 macOS 上使用 Xcode Command Line Tools,在 Linux 上使用 GCC。

安装 VSCode 插件

  1. CMake Tools:在 VSCode 中安装 CMake Tools 插件,帮助管理 CMake 项目。

    打开 VSCode,然后点击左侧的扩展图标(或者按 Ctrl+Shift+X),搜索并安装 CMake Tools 插件。

  2. C++ 插件:同理,安装 C++ 插件,用于代码提示和调试。

创建 CMake 项目

为了展示整个过程,我们假设你有如下的项目结构:

MyProject
├── src
│   └── main.cpp
├── include
│   └── main.h
└── CMakeLists.txt
1. 创建 CMakeLists.txt

MyProject 目录下创建 CMakeLists.txt,内容如下:

cmake_minimum_required(VERSION 3.10)# 项目信息
project(MyProject)# 设置 C++ 标准
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED True)# 包含目录
include_directories(include)# 添加可执行文件
add_executable(MyProject src/main.cpp)
2. 创建源文件

src 目录下创建 main.cppinclude 目录下创建 main.h

src/main.cpp

#include <iostream>
#include "main.h"int main() {std::cout << "Hello, CMake with VSCode!" << std::endl;return 0;
}

include/main.h

#ifndef MAIN_H
#define MAIN_H#endif // MAIN_H

配置 VSCode

1. 配置 CMake Tools

打开 VSCode 的命令面板(按 Ctrl+Shift+P),然后输入并选择 CMake: Quick Start 进行初始配置。这个步骤将创建必要的配置文件。

2. 配置调试

创建调试配置文件 .vscode/launch.json,内容如下:

{"version": "0.2.0","configurations": [{"name": "C++ Launch","type": "cppdbg","request": "launch","program": "${workspaceFolder}/build/MyProject", "args": [],"stopAtEntry": false,"cwd": "${workspaceFolder}","environment": [],"externalConsole": false,"MIMode": "gdb", "setupCommands": [{"description": "Enable pretty-printing for gdb","text": "-enable-pretty-printing","ignoreFailures": true}],"miDebuggerPath": "/usr/bin/gdb", "preLaunchTask": "build","logging": {"moduleLoad": false,"trace": false,"engineLogging": false,"programOutput": true,"exceptions": false},"internalConsoleOptions": "openOnSessionStart"}]
}

请根据你的系统修改 miDebuggerPath,Windows 下使用 C:\\path\\to\\gdb.exe,macOS 使用 /usr/bin/lldb

3. 配置任务

创建任务配置文件 .vscode/tasks.json,内容如下:

{"version": "2.0.0","tasks": [{"label": "build","type": "shell","command": "cmake","args": ["--build","${workspaceFolder}/build"],"group": {"kind": "build","isDefault": true},"problemMatcher": [],"detail": "Task generated by CMake Tools."}]
}
4. 创建 CMake 生成构建文件夹

执行以下命令创建生成构建文件夹:

mkdir -p ${workspaceFolder}/build

在 VSCode 中构建和调试

  1. 构建项目:按 F7 或在命令面板中选择 Tasks: Run Build Task。这将运行 CMake 生成和构建任务,把所有的构建文件放置在 build 目录中。

  2. 调试项目:按 F5 启动调试。此时 VSCode 将使用之前配置好的调试器(如 gdb)来启动你的应用程序,并附加到程序上进行调试。

总结

通过以上步骤,你可以在 VSCode 中高效地使用 CMake 配置和管理你的 C++ 项目。CMake Tools 插件简化了项目配置过程,而 tasks.jsonlaunch.json 则帮助你集成构建和调试工作流。通过这种方式,可以在一个统一的开发环境中进行高效的开发和调试工作。

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

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

相关文章

医院人员管理项目01_下午,css

文章目录 层叠样式表在html文件中引入css样式表&#xff1a;2种方法如何设置样式&#xff1a;3种css选择器继承权重 层叠样式表 引入html网页中的方式&#xff0c;共3种。 行内样式&#xff08;内联样式&#xff09;&#xff1a;直接在html中设置 内部样式&#xff1a;css代…

学诚教育在线管理系统-计算机毕业设计源码98076

目 录 摘要 1 绪论 1.1 选题背景与意义 1.2开发现状 1.3论文结构与章节安排 2 开发环境及相关技术介绍 2.1 MySQL数据库 2.2 Tomcat服务器 2.3 Java语言 2.4 Spring Cloud框架介绍 3 教育在线管理系统系统分析 3.1 可行性分析 3.1.1 技术可行性分析 3.1.2 经济可…

【Proteus仿真】基于Stm32的八路抢答器~

【Proteus仿真】基于Stm32的八路抢答器~ 文档资料在购买后即可获得&#xff08;如有问题可通过微信公号或b站私信联系我&#xff09; 资料包括&#xff1a; 1. Proteus仿真源文件2. keil源代码功能描述: 1. 抢答时间设置显示2. 选手得分用时显示3. 选手数据查询/清楚4.抢答…

Java | Leetcode Java题解之第213题打家劫舍II

题目&#xff1a; 题解&#xff1a; class Solution {public int rob(int[] nums) {int length nums.length;if (length 1) {return nums[0];} else if (length 2) {return Math.max(nums[0], nums[1]);}return Math.max(robRange(nums, 0, length - 2), robRange(nums, 1,…

App UI性能测试 - PerfDog使用全教程

App 性能测试指标: 响应、内存、CPU、FPS、GPU渲染、耗电、耗流等。 PerfDog的性能数据更加全面,所以下面以PerfDog来介绍安装使用流程及测试数据的获取与分析。 官网: PerfDog | 全平台性能测试分析专家 第一步,先访问官网进行注册, 注册好账号后,点击下载PerfDog,下…

【算法笔记自学】第 7 章 提高篇(1)——数据结构专题(1)

7.1栈的应用 #include <iostream> #include <string> #include <stack> using namespace std;int main() {int n, x;string action;cin >> n;stack<int> s;for (int i 0; i < n; i) {cin >> action;if (action "push") {ci…

昇思25天学习打卡营第19天|Pix2Pix实现图像转换

1. 学习内容复盘 Pix2Pix概述 Pix2Pix是基于条件生成对抗网络&#xff08;cGAN, Condition Generative Adversarial Networks &#xff09;实现的一种深度学习图像转换模型&#xff0c;该模型是由Phillip Isola等作者在2017年CVPR上提出的&#xff0c;可以实现语义/标签到真实…

生活商城app微信小程序模板源码

红色的卷皮折扣电商app小程序&#xff0c;综合生活购物商城app小程序前端模板下载。包含&#xff1a;首页、分类、购物车、列表、商品详情、个人中心、优惠券、全部订单、生活超市专题等等。一套很全通用的商城app小程序模板。 生活商城app微信小程序模板源码

YOLOv8标签可视化

这一章主要是为了可视化YOLO标签设置的,为什么要进行可视化呢,因为很多时候我们标注好数据还需要进行转换成YOLO格式,这期间如果出现转换的错误,而我们没有去检查标签的话,有可能导致训练无法得到很好的一个结果,所以需要我们对YOLO标签进行可视化来检查标签的情况。 这部…

《梦醒蝶飞:释放Excel函数与公式的力量》9.5 IRR函数

9.5 IRR函数 IRR函数是Excel中用于计算内部收益率&#xff08;Internal Rate of Return, IRR&#xff09;的函数。内部收益率是评估投资项目盈利性的重要指标&#xff0c;它表示使投资项目的净现值&#xff08;NPV&#xff09;为零的折现率。 9.5.1 函数简介 IRR函数通过一系…

【免费数字孪生平台】零代码制作智慧农业蔬菜大棚可视化

一&#xff0e;智慧农业的价值 智慧农业&#xff0c;作为农业中的智慧经济形态&#xff0c;是现代科学技术与农业种植深度融合的产物。它通过将物联网、云计算、大数据、人工智能等现代信息技术集成应用于农业生产中&#xff0c;实现了农业生产的无人化、自动化和智能化管理。…

第十一节 动态面板加密解密显示

在原型中我们经常会遇到文件加密与解密显示问题&#xff0c;下面以一个简单案例来说明实现怎么切换明文与密文不同显示方式案例说明&#xff1b; 1、添加动态面板 2、设置加密与不加密 3、添加动作事项 注意为可见时要设置面板状态向前循环&#xff0c;上一项&#xff0c;否则…

“一稿多投”是学术不端,还是作者的合法权利?

【SciencePub学术】“一稿多投”一直被认为是不端的行为&#xff0c;但这个“规矩”是在纸质时代信息沟通不畅的情况下制定的&#xff0c;近年来有关取消这一观念的声音已振聋发聩&#xff01; 詹启智的《一稿多投是著作权人依法享有的合法权利一一兼论一稿多发后果的规制》一文…

3115.力扣每日一题7/2 Java

博客主页&#xff1a;音符犹如代码系列专栏&#xff1a;算法练习关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ 目录 思路 解题方法 时间复杂度 空间复杂度 Code 总结 思路 这道题的…

PDM系统中物料分类与编码规则生成方案

在企业管理软件中&#xff0c;PDM系统是企业管理的前端软件&#xff0c;用于管理研发图纸、BOM等数据&#xff0c;然后生成相关物料表或BOM&#xff0c;递交给后端ERP系统进行生产管理。在PDM系统中&#xff0c;有两种方式可以生成物料编码。 1第一种是用户可以通过软件接口将…

浅谈MyBatis的工作原理以及核心流程

引言 在行内日常开发工作中&#xff0c;基于Java的研发项目会大量的与数据库做交互访问。传统方式是通过JDBC访问数据库&#xff0c;不仅需要繁琐的手工编写很多代码&#xff0c;增加了工程项目的复杂度&#xff0c;而且存在难以维护&#xff0c;配置不够灵活等特点。为解决传…

架构师学习理解和总结

1.架构设计理念 2.架构方法论 2.1需求分析 2.1.1常见需求层次 2.1.2 常见需求结果 2.1.3 需求与架构关系 2.2 领域分析 2.3 关键需求 2.4 概念架构设计 2.5 细化架构设计 2.6 架构设计验证 3.架构设计工具 3.1 DDD领域建模 3.2 41视图分析法 3.3 UML设计工具 4.架构师知…

EDI安全:如何在2024年保护您的数据免受安全和隐私威胁

电子数据交换&#xff08;EDI&#xff09;支持使用标准化格式在组织之间自动交换业务文档。这种数字化转型彻底改变了业务通信&#xff0c;消除了对纸质交易的需求并加速了交易。然而&#xff0c;随着越来越依赖 EDI 来传输发票、采购订单和发货通知等敏感数据&#xff0c;EDI …

利用canvas压缩图片

前情提要 页面打印导出pdf文件的时候&#xff0c;图片大小会影响pdf文件大小。 为了减小pdf文件大小&#xff0c;需要将图片压缩一下。在只有图片地址的情况下&#xff0c;将图片压缩后显示&#xff0c;一开始用的browser-image-compression插件&#xff0c;这是js压缩&#x…

Elasticsearch:Node.js ECS 日志记录 - Winston

这是继上一篇文章 “Elasticsearch&#xff1a;Node.js ECS 日志记录 - Pino” 的续篇。我们继续上一篇文章来讲述使用 Winston 包来针对 Node.js 应用生成 ECS 向匹配的日子。此 Node.js 软件包为 winston 记录器提供了格式化程序&#xff0c;与 Elastic Common Schema (ECS) …