[C++][CMake][CMake基础]详细讲解

目录

  • 1.CMake简介
  • 2.大小写?
  • 3.注释
    • 1.注释行
    • 2.注释块
  • 4.日志

1.CMake简介

  • CMake是一个项目构建工具,并且是跨平台

  • 问题 – 解决

    • 如果自己动手写Makefile,会发现,Makefile通常依赖于当前的编译平台,而且编写Makefile的工作量比较大,解决依赖关系时也容易出错
    • 而CMake恰好能解决上述问题, 其允许开发者指定整个工程的编译流程,再根据编译平台,自动生成本地化的Makefile和工程文件,最后用户只需make编译即可
  • 可以把CMake看成一款自动生成Makefile的工具,其编译流程如下图

  • CMake优点总结

    • 跨平台
    • 能够管理大型项目
    • 简化编译构建过程和编译过程
    • 可扩展:可以为CMake编写特定功能的模块,扩充CMake功能

2.大小写?

  • CMake支持大写、小写、混合大小写的命令
  • 如果在编写CMakeLists.txt文件时使用的工具有对应的命令提示,那么大小写随缘即可,不用太过在意

3.注释

1.注释行

  • CMake使用#进行行注释,可以放在任何位置
    # 这是一个CMakeLists.txt文件
    

2.注释块

  • CMake使用#[[]]进行块注释
    #[[这是一个CMakeLists.txt文件
    Die
    SnowK]]
    

4.日志

  • 在CMake中可以用命令显示一条消息,该命令的名字为message
  • 语法
    message([STATUS|WARNING|AUTHOR_WARNING|FATAL_ERROR|SEND_ERROR] "message to display" ...)
    
  • 状态参数
    • (无):重要消息
    • STATUS:非重要消息
    • WARNING:CMake警告,会继续执行
    • AUTHOR_WARNING:CMake警告(dev),会继续执行
    • SEND_ERROR:CMake错误,继续执行,但是会跳过生成的步骤
    • FATAL_ERROR:CMake错误,终止所有处理过程
  • 显示区域
    • CMake的命令行工具会在stdout上显示STATUS消息,在stderr上显示其他所有消息
    • CMake的GUI会在它的log区域显示所有消息
  • CMake警告和错误消息的文本显示使用的是一种简单的标记语言
    • 文本没有缩进
    • 超过长度的行会回卷
    • 段落之间以新行做为分隔符
  • 示例
    # 输出一般日志信息
    message(STATUS "source path: ${PROJECT_SOURCE_DIR}")
    # 输出警告信息
    message(WARNING "source path: ${PROJECT_SOURCE_DIR}")
    # 输出错误信息
    message(FATAL_ERROR "source path: ${PROJECT_SOURCE_DIR}")
    

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

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

相关文章

vue的学习--day3

1、尝试使用json文件模拟增删改查 json server:准备一份自己的数据(这里我用的是老师给的)。 转到d盘,然后打开json文件: 下面模拟增删改查: 借助工具postman或apifox或apipost: 这里我下载了apifox&…

前端之CSS篇--面试题总结

CSS的特性:继承性、层叠性、优先级 优先级:写css样式的时候,会给同一个元素添加多个样式,此时谁的权重搞就显示谁的样式。 !important >行内样式>id>类>标签>全局选择器 隐藏元素的方法 display:none 元素在页面…

产品公告 | MemFire Cloud 现已支持微信授权登录,为移动应用带来更便捷的认证服务

MemFire Cloud推出的“开箱即用”的后端服务,提供了云数据库、身份验证与授权、云存储、静态托管、实时realtime、自动生成API等功能,本次升级新增/优化功能如下: 标题微信授权登录(移动应用) 为了顺应国内用户的使用…

Python面试题:如何在 Python 中实现单例模式?

在 Python 中,有多种方法可以实现单例模式(Singleton Pattern)。单例模式是一种设计模式,确保一个类只有一个实例,并提供一个全局访问点。以下是几种常见的方法来实现单例模式: 方法一:使用类变…

Elasticsearch:Ingest architectures - 摄取架构

我们提供各种采集架构,以满足各种用例和网络配置的需求。 要将数据采集到 Elasticsearch,请使用最符合你的需求和用例的选项。对于许多用户和用例来说,最简单的方法是使用 Elastic Agent 采集数据并将其发送到 Elasticsearch。Elastic Agent…

深度学习——深度学习中感受野的计算

感受野 在卷积神经网络(CNN)中,感受野(Receptive Field) 是一个非常重要的概念。它描述了网络中某一层的输出(通常是特征图上的一个像素点)所对应的输入图像上的空间范围。这个范围代表了该输出…

【CSS】了解grid-template-areas属性

grid-template-areas 属性是 CSS Grid 布局中一个非常有用的特性,它允许你通过命名网格区域(grid areas)来直接控制网格项目的布局。这个属性通过引用网格容器内部网格项目的名称来定义网格区域的布局,使得布局的设计更加直观和易…

SARscape——地理编码与辐射定标

目录 一、算法原理1、概述2、参考文献 二、软件操作三、结果展示1、原始图像2、处理结果 一、算法原理 1、概述 SAR系统观测到的是电磁波入射地球表面后反射(后向散射)的雷达脉冲的强度和相位信息。这个信息编码到雷达坐标系统下,即斜距坐标…

DataFrame 的常用操作

DataFrame是什么? DataFrame 是一种用于处理和分析数据的二维标签数据结构。它类似于Excel中的电子表格或数据库中的表格,由行和列组成。每个列可以是不同的数据类型(如整数、浮点数、字符串等),并且可以进行各种数据操…

vb与数据库编程

第一节 一、数据库基础知识 数据库的概念 数据库是按照数据结构来组织、存储和管理数据的仓库。 它可以存储大量的数据,并提供高效的数据访问和管理功能。 数据库的类型 关系型数据库:如 SQL Server、MySQL、Oracle 等,以表格形式存储数据,通过关系(如主键和外键)来关联不…

数据结构之二叉树概念

数据结构之二叉树 二叉树简介分类普通二叉树平衡二叉树满二叉树二叉搜索树(二叉排序树、二叉查找树),平衡二叉树红黑树 B树类型B树(B-树、B_树)B树B*树 二叉树 简介 二叉树(Binary Tree) :是一种非常重要…

RPC框架之Dubbo

Dubbo 是一款高性能、轻量级的开源 Java RPC(Remote Procedure Call)框架,由阿里巴巴集团于2011年发布。Dubbo 主要用于实现基于微服务架构的分布式应用,通过提供服务注册与发现、负载均衡、容错等功能,极大地简化了服…

头歌资源库(19)在排序数组中查找元素的首尾位置

一、 问题描述 二、算法思想 该问题可以通过二分查找的思想来解决。 首先,我们可以使用二分查找找到目标值在数组中的任意一个位置(即该位置的值等于目标值)。假设找到的位置为mid。 接下来,我们需要在mid的左边和右边分别找到…

UNIAPP_顶部导航栏右侧添加uni-icons图标,并绑定点击事件,自定义导航栏右侧图标

效果 1、导入插件 uni-icons插件:https://ext.dcloud.net.cn/plugin?nameuni-icons 复制 uniicons.ttf 文件到 static/fonts/ 下 仅需要那个uniicons.ttf文件,不引入插件、单独把那个文件下载到本地也是可以的 2、配置页面 "app-plus":…

Python爬虫+数据分析+数据可视化图形-爬取高校排名数据

①本文主要使用python 爬取了中国大学排名前30的大学信息,并进行了数据处理及分析,是一个比较经典的python爬虫和分析项目 ②主要内容:爬虫数据预处理数据可视化分析 完整代码请看这里拿👇↓↓↓

Flutter本地数据持久化的几种方式

目录 前言 一、shared_preferences 1.添加依赖 2.保存数据 3.读取数据 4.移除数据 5.Shared_preferences的优缺点 6.完整的示例代码 二、path_provider 1.导入path_provider 2.创建文件读写的目录 3.向文件中写入数据 4.从文件中读取数据 5.完整的示例代码 三、…

Mac本地部署大模型-单机运行

前些天在一台linux服务器(8核,32G内存,无显卡)使用ollama运行阿里通义千问Qwen1.5和Qwen2.0低参数版本大模型,Qwen2-1.5B可以运行,但是推理速度有些慢。 一直还没有尝试在macbook上运行测试大模型&#xf…

我这个经验好找嵌入式的工作吗?

大家好,我是麦鸽。最近网友的提问,这样的经验,好找嵌入式的工作吗? 下面是网友的情况: 本人目前大二机器人工程,未来想要入职嵌入式行业,有robomaster比赛经验本人负责电控,但是由于…

基因组学系列3:基因分型Phasing与单倍型参考序列HRC

1. 基因分型Phasing概念 基因分型,也称为基因定相、单倍体分型、单倍体构建等,即将一个二倍体(或多倍体)基因组上的等位基因(或杂合位点)正确定位到父亲或母亲的染色体上,最终使得来自同一亲本…

相亲交友APP系统婚恋交友社交软件开发语音视频聊天平台定制开发-婚恋相亲交友软件平台介绍——app小程序开发定制

互联网飞速发展的时代,相亲交友软件成为了许多年轻人首选的相亲方式,越来越多的单身男女希望在婚恋交友软件平台上寻找灵魂伴侣,相亲交友软件因此具有很高的市场价值。 多客婚恋相亲交友系统是一款定位高端,到手就能运营的成熟婚恋…