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

[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.lryc.cn/news/391828.html

相关文章:

  • CCD技术指标
  • SpringBoot系列——使用Spring Cache和Redis实现查询数据缓存
  • 【算法】(C语言):冒泡排序、选择排序、插入排序
  • iOS项目怎样进行二进制重排
  • CentOS中使用SSH远程登录
  • spring @Autowire注解作用
  • 密码学原理精解【5】
  • Unity3D 资源管理YooAsset原理分析与详解
  • npm install puppeteer 报错 npm ERR! PUPPETEER_DOWNLOAD_HOST is deprecated解决办法
  • 浙大版PTA《Python 程序设计》题目集 参考答案
  • “拆分盘投资:机遇与风险并存
  • Java面试题系列 - 第2天
  • AGI|Transformer自注意力机制超全扫盲攻略,建议收藏!
  • QT+OpenCV在Android上实现人脸实时检测与目标检测
  • 常见网络攻击方式及防御方法
  • 使用 ESP32 实现无线对讲机功能涉及音频采集、音频传输以及音频播放等多个方面。实现无线对讲机功能的基本步骤和示例代码。
  • SpringBoot项目,配置文件pom.xml的结构解析
  • 教程:Spring Boot中集成Memcached的详细步骤
  • Websocket通信实战项目(图片互传应用)+PyQt界面+python异步编程(async) (上)服务器端python实现
  • 实验一 MATLAB \ Python数字图像处理初步
  • echarts柱状选中shadow阴影背景宽度设置
  • ArrayBuffer 对象常见的几个用途
  • STC89C52RC单片机设计的FM收音机+自动搜台+存储电台(程序+原理图+PCB)
  • 【若依】关闭当前标签页并跳转路由到其他页面
  • 防爆智能手机如何解决危险环境下通信难题?
  • 软件测试最全面试题及答案整理(2024最新版)
  • 11 - matlab m_map地学绘图工具基础函数 - 绘制航迹、椭圆、风向玫瑰图和特定的圆形区域的有关函数及其用法
  • 长安链安装及使用问题
  • 大学生竞赛管理系统-计算机毕业设计源码37276
  • 去中心化 RAG 先行者,KIP Protocol 如何保护数据所有权、激活 AI 资产