当前位置: 首页 > news >正文

VSCode 配置 CMake

VSCode 配置 C/C++ 环境的详细过程可参考:VSCode 配置 C/C++ 环境

1 配置C/C++编译环境

如果是 Windows 环境,需要安装 MingW。

  • 方案一
    可以去官网(https://sourceforge.net/projects/mingw-w64/)下载安装包。
    注意安装路径不要出现中文。
    在这里插入图片描述

    打开 windows shell 界面,输入mingw-get install gccmingw-get install g++
    如果安装的时候提示安装包被错误下载,可使用方案二安装。

  • 方案二
    进入网址https://sourceforge.net/projects/mingw-w64/files/,下滑,下载图中所示压缩包。
    在这里插入图片描述

    找一个无中文路径解压缩。
    添加环境变量。在Path中加入解压后的文件夹中的bin目录,如C:\ProgramFiles\MinGW\mingw64\bin。
    在这里插入图片描述
    在这里插入图片描述

  • 测试
    在 windows shell 界面输入gcc -vg++ -v,正确出现版本号则配置成功。

  • 创建 make.exe
    进入 MingW 安装位置下的 bin 目录,将 mingw32-make 复制一份,并改名为 make.exe。如果不这样做,无法使用 make 命令,而需要使用 mingw32-make 命令作为替代。

2 安装 CMake

可以去官网(https://cmake.org/download/)下载安装包。
向下滑,找到安装包,直接下载安装即可。
在这里插入图片描述

3 安装 VSCode 插件

按 Ctrl+Shift+x,或点击图中图标,搜索以下插件并安装:C/C++ 、Code Runner、CMake、CMake tools。
在这里插入图片描述

4 创建 CMake 工程

新建一个文件夹并用 VSCode 打开。
按 Ctrl+Shift+p,或点击图中所示图标,打开命令面板。
在这里插入图片描述
搜索 cmake,选择 CMake 快速入门。
在这里插入图片描述
输入项目名称。
在这里插入图片描述
选择项目类型。
在这里插入图片描述
选择 Executable。在这里插入图片描述
生成以下文件。
在这里插入图片描述
然后就可以编写代码了。

5 CMakeLists.txt

编写 CMakeLists.txt 后,在同级目录下创建 build 文件夹,进入 build 文件夹,使用命令 cmake ..,可自动生成 Makefile。
如果当前项目首次使用 cmake 命令并且报错了,可以清空 build 目录下的所有文件后,尝试使用 cmake -G"MinGW Makefiles" ..
以下是 CMakeLists.txt 中一些可以使用的语句示例:

# 指定最小版本
cmake_minimum_required(VERSION 3.0.0)
# 制定项目名称
project(algorithm VERSION 0.1.0 LANGUAGES C CXX)
# 引入CTest
include(CTest)
enable_testing()
# 添加子项目
add_subdirectory(subdirectory)
# 如果有共享的头文件或库,可以在这里包含
include_directories(common_include_folder)
# 如果有共享的库文件,可以在这里链接
link_directories(common_lib_folder)
# 指定生成可执行文件
# add_executable(algorithm main.cpp)
# 链接子项目生成的库文件
# target_link_libraries(MyExecutable subproject1_lib subproject2_lib)
# 设置参数
set(CPACK_PROJECT_NAME ${PROJECT_NAME})
set(CPACK_PROJECT_VERSION ${PROJECT_VERSION})
set(CMAKE_CXX_COMPILER "D:\\ProgramFiles\\MingW\\mingw64-8.1.0\\bin\\g++.exe")  # 指定编译器路径
# 添加所有源文件
file(GLOB SOURCES "src/*.cpp")
# 添加头文件路径
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)
# 生成可执行文件
add_executable(partition_executable ${SOURCES})

示例:
假设项目结构如下:

project_root/|- CMakeLists.txt|- subproject1/|- CMakeLists.txt|- src/|- main.cpp|- utils/|- utility.cpp|- utility.h|- include/|- subproject1/|- header1.h|- header2.h|- subproject2/|- CMakeLists.txt|- src/|- main.cpp|- math/|- math.cpp|- math.h|- include/|- subproject2/|- header3.h|- header4.h

主项目的CMakeLists.txt文件可以如下所示:

cmake_minimum_required(VERSION 3.10)
project(MyProject)# 添加子项目
add_subdirectory(subproject1)
add_subdirectory(subproject2)

子项目的CMakeLists.txt文件可以如下所示:

cmake
# 子项目名
project(subproject1)# 添加所有源文件
file(GLOB SOURCES "src/*.cpp" "src/utils/*.cpp")# 添加头文件路径
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)# 生成可执行文件
add_executable(subproject1_executable ${SOURCES})

可以在每个子项目文件夹下执行以下命令来构建和运行单独的子项目:

mkdir build
cd build
cmake ..
make
./subproject1_executable
./subproject2_executable

6 运行

经过上一步可生成 Makefile,然后运行 make 命令,就可以生成 exe 可执行文件。
接下来运行可执行文件就可以了。

相关文章:

VSCode 配置 CMake

VSCode 配置 C/C 环境的详细过程可参考:VSCode 配置 C/C 环境 1 配置C/C编译环境 如果是 Windows 环境,需要安装 MingW。 方案一 可以去官网(https://sourceforge.net/projects/mingw-w64/)下载安装包。 注意安装路径不要出现中文。 打开 windows she…...

​《MATLAB科研绘图与学术图表绘制从入门到精通》示例:绘制德国每日风能和太阳能产量3D线图

在MATLAB中,要绘制3D线图,可以使用 plot3 函数。 在《MATLAB科研绘图与学术图表绘制从入门到精通》书中通过绘制德国每日风能和太阳能产量3D线图解释了如何在MATLAB中绘制3D线图。 购书地址:https://item.jd.com/14102657.html...

【信息系统项目管理师知识点速记】质量管理:控制质量

控制质量是为了评估绩效,确保项目输出完整、正确且满足客户期望,而监督和记录质量管理活动执行结果的过程。控制质量过程需要在整个项目期间开展,其目的是测量产品或服务的完整性、合规性和适用性,以确保项目达到主要干系人的质量要求。 12.5.1 输入 项目管理计划 质量管理…...

【云原生】Pod 的生命周期(一)

【云原生】Pod 的生命周期(一)【云原生】Pod 的生命周期(二) Pod 的生命周期(一) 1.Pod 生命期2.Pod 阶段3.容器状态3.1 Waiting (等待)3.2 Running(运行中)3…...

Golang | Leetcode Golang题解之第71题简化路径

题目: 题解: func simplifyPath(path string) string {stack : []string{}for _, name : range strings.Split(path, "/") {if name ".." {if len(stack) > 0 {stack stack[:len(stack)-1]}} else if name ! "" &am…...

Unreal游戏GPU性能优化检测模式全新上线

UWA已经在去年推出了针对于Unity项目的GPU性能优化工具,通过对GPU渲染性能、带宽性能以及各种下探指标,帮助Unity项目研发团队定位由GPU导致的发热耗电问题。这个需求在Unreal团队中也极为强烈,因此UWA将该功能移植到针对Unreal项目的GOT Onl…...

设计网页用什么软件

在设计网页时,可以使用多种软件来完成不同的任务。以下是一些常用的网页设计软件,以及它们的特点和用途。 1. Adobe Photoshop: Adobe Photoshop 是一款功能强大的图像编辑软件。在网页设计中,它常用于创建和编辑网页所需的图像、…...

⑪ - 测试工程师通识指南

📖 该文隶属 程序员:职场关键角色通识宝典✍️ 作者:哈哥撩编程(视频号同名) 博客专家全国博客之星第四名超级个体COC上海社区主理人特约讲师谷歌亚马逊演讲嘉宾科技博主极星会首批签约作者🏆 推荐专栏: 🏅 程序员:职场关键角色通识宝典🏅...

RabbitMQ知识点总结和复习

之前项目中用到RabbitMQ的场景主要是订单信息的传递,还有就是利用RabbitMQ的死信队列属性设置,实现延迟队列效果,实现超时支付取消功能,以及在两个不同项目中传递数据等场景。 最近几年的工作中都是一直用的RabbitMQ,…...

ContEA阅读笔记

Facing Changes: Continual Entity Alignment for Growing Knowledge Graphs 面对变化:不断增长的知识图谱的持续实体对齐 Abstract 实体对齐是知识图谱(KG)集成中一项基本且重要的技术。多年来,实体对齐的研究一直基于知识图谱是静态的假设&#xff…...

使用nvm切换nodejs版本

查看可以安装的版本: 使用nvm list显示已安装的nodejs版本: 选择一个版本下载: 切换对应的版本:...

机器学习_KNN算法

机器学习_KNN算法 K-近邻(K-Nearest Neighbors,简称KNN)算法是一种基本的机器学习分类和回归算法 其核心思想是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别…...

学QT的第一天~

#include "mywidget.h" MyWidget::MyWidget(QWidget *parent) : QWidget(parent) { //窗口相关设置// this->resize(427,330); this->setFixedSize(427,330); //设置图标 this->setWindowIcon(QIcon("C:\\Users\\Admin\\Desktop\\pictrue\\dahz.jpg&q…...

《QT实用小工具·四十九》QT开发的轮播图

1、概述 源码放在文章末尾 该项目实现了界面轮播图的效果,包含如下特点: 左右轮播 鼠标悬浮切换,无需点击 自动定时轮播 自动裁剪和缩放不同尺寸图片 任意添加、插入、删除 单击事件,支持索引和自定义文本 界面美观,圆…...

uniapp 自定义 App启动图

由于uniapp默认的启动界面太过普通 所以需要自定义个启动图 普通的图片不可以过不了苹果的审核 所以使用storyboard启动图 生成 storyboard 的网站:初雪云-提供一站式App上传发布解决方案...

39-1 Web应用防火墙 - WAF应用程序层绕过

环境准备:构建完善的安全渗透测试环境:推荐工具、资源和下载链接_渗透测试靶机下载-CSDN博客 一、双重URL编码绕过 什么是URL编码 URL编码是一种将特殊字符转为%加上其ASCII值的方式,以确保在URL中传输时不会被误解或导致错误。例如,字母"s"的URL编码是"…...

【1】STM32·FreeRTOS·新建工程模板【一步到位】

目录 一、获取FreeRTOS源码 二、FreeRTOS源码简介 2.1、FreeRTOS源码文件内容 2.2、FreeRTOS内核 2.3、Source文件夹 2.4、portable文件夹 三、FreeRTOS手把手移植 3.1、FreeRTOS移植准备 3.2、FreeRTOS移植步骤 3.2.1、将 FreeRTOS 源码添加至基础工程、头文件路径等…...

linux下sd卡的备份与还原

在Ubuntu上制作SD卡备份镜像,你可以使用dd命令。以下是一个基本的步骤和示例代码: 插入SD卡到电脑。确定SD卡设备路径,使用lsblk或sudo fdisk -l命令。确定备份镜像文件的路径。使用dd命令制作备份。 示例代码: bash# 查看连接的…...

Spring Boot项目中集成Logback作为日志框架-笔记

在Spring Boot项目中集成Logback作为日志框架是一个标准做法,因为Spring Boot默认就使用Logback作为日志系统。以下是集成Logback的步骤: 1. 默认集成 Spring Boot会自动配置Logback,所以通常情况下,你不需要添加任何额外的依赖或…...

Python_GUI框架 PyQt 与 Pyside6的介绍

Python_GUI框架 PyQt 与 Pyside6的介绍 一、简介 在Python的GUI(图形用户界面)开发领域,PyQt和PySide6是两个非常重要的工具包。它们都基于Qt库,为Python开发者提供了丰富的GUI组件和强大的功能。当然Python也有一些其他的GUI工…...

打破数据标注瓶颈:Label Studio如何让AI训练效率提升300%?

打破数据标注瓶颈:Label Studio如何让AI训练效率提升300%? 【免费下载链接】label-studio Label Studio is a multi-type data labeling and annotation tool with standardized output format 项目地址: https://gitcode.com/GitHub_Trending/la/labe…...

5步告别Windows卡顿:Win11Debloat系统优化工具让电脑性能提升51%的实战指南

5步告别Windows卡顿:Win11Debloat系统优化工具让电脑性能提升51%的实战指南 【免费下载链接】Win11Debloat 一个简单的PowerShell脚本,用于从Windows中移除预装的无用软件,禁用遥测,从Windows搜索中移除Bing,以及执行各…...

别再死记硬背PCA公式了!用Python+Open3D实战点云法向量估计(附代码)

用Python实战点云法向量估计:从数学原理到Open3D实现 点云处理是计算机视觉和三维重建中的基础任务,而法向量估计则是理解点云局部几何特征的关键步骤。传统教学中,PCA(主成分分析)往往被简化为一堆数学公式&#xff…...

Solidity 智能合约入门:从 0 到 1 编写第一个区块链合约

一、什么是 Solidity? Solidity 是一门面向以太坊虚拟机(EVM)、静态类型的高级编程语言,专门用于编写区块链上的智能合约。 简单来说: 智能合约 运行在区块链上的自动执行代码(无需第三方,代…...

从AlexNet到MobileNet:深度可分离卷积如何用1/4参数量实现高效推理?

从AlexNet到MobileNet:深度可分离卷积如何用1/4参数量实现高效推理? 在移动互联网时代,AI模型部署正经历从云端到边缘的范式转移。当我们谈论"高效推理"时,实际上是在探讨一个核心矛盾:如何在有限的硬件资源…...

Excel办公必备4个技巧:格式转换、隔列插入、限制编辑、文本数字分离

在日常办公中,Excel是我们使用频率最高的软件之一,但很多人只掌握了最基础的录入和简单计算功能,遇到一些“卡脖子”的小问题就束手无策,不得不手动折腾半天。其实,Excel中隐藏着不少实用的小技巧,能帮你轻…...

Polars 2.0内存优化实战:如何用lazy().collect()规避OOM,单机处理500GB脏数据?

第一章:Polars 2.0内存优化实战:如何用lazy().collect()规避OOM,单机处理500GB脏数据?在处理超大规模脏数据集时,传统 eager 模式极易触发 OOM(Out-of-Memory)错误。Polars 2.0 的 LazyFrame 提…...

Phi-4-Reasoning-Vision入门指南:图文推理结果JSON结构与API对接说明

Phi-4-Reasoning-Vision入门指南:图文推理结果JSON结构与API对接说明 1. 工具概述 Phi-4-Reasoning-Vision是一款基于微软Phi-4-reasoning-vision-15B多模态大模型开发的高性能推理工具,专为双NVIDIA RTX 4090显卡环境优化。该工具严格遵循官方SYSTEM …...

Linux 内核模块编程入门

Linux 内核模块编程入门 内核模块的重要性 作为科技创业者,我深刻理解内核模块在系统开发中的灵活性和强大功能。内核模块允许我们在不重新编译整个内核的情况下,动态地添加或移除功能。这种机制不仅加快了开发迭代速度,还为产品定制化提供了…...

ESP8266嵌入式JavaScript引擎:零内存分配的确定性JS执行

1. 项目概述 ESP8266-Arduino-JavaScript 是一个面向 ESP8266 平台的轻量级嵌入式 JavaScript 引擎库,其核心目标并非在微控制器上完整复刻 V8 或 SpiderMonkey 的功能,而是为资源受限的 IoT 设备提供一种 可预测、内存可控、无动态分配、零依赖 的脚本…...