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

news/2024/7/8 7:51:20 标签: c++, 开发语言, CMake, make, makefile, 新手向, 详细讲解

目录

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

CMake_1">1.CMake简介

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

  • 问题 – 解决

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

  • CMake优点总结

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

2.大小写?

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

3.注释

1.注释行

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

2.注释块

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

4.日志

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


http://www.niftyadmin.cn/n/5536841.html

相关文章

2.5 C#视觉程序开发实例1----开始设计架构一个简单的程序

2.5 C#视觉程序开发实例1----开始设计架构一个简单的程序 第一步目标: 1 IO交互:读取IO 并且显示 2 相机采集线程: In[0]上升沿,采集图像, 通知处理线程显示图片 3 图像处理线程: 接受信号,显示…

Map Set(Java篇详解)

🍁 个人主页:爱编程的Tom💫 本篇博文收录专栏:Java专栏👉 目前其它专栏:c系列小游戏 c语言系列--万物的开始_ 等 🎉 欢迎 👍点赞✍评论⭐收藏💖三连支持…

精通SQL Server端口管理:添加与删除监听端口的指南

引言 SQL Server的端口管理是数据库管理员(DBA)必须掌握的关键技能之一。端口配置不仅关系到数据库的网络通信能力,还直接影响到数据库的安全性和性能。本文将详细介绍如何在SQL Server中添加和删除监听端口,以及相关的配置策略和最佳实践。 SQL Serve…

谷粒商城学习笔记-05-项目微服务划分图

文章目录 一,商城业务服务-前端服务二,商城业务服务-后端服务三,存储服务四,第三方服务五,服务治理六,日志七,监控预警系统1,Prometheus2,Grafana3,Prometheu…

手写SpringMVC之调度器DispatcherServlet

DispatcherServlet:分发、调度 根据上一节,已经实现了将controller的方法添加到容器中,而DispatcherServlet的作用就是接收来自客户端的请求,然后通过URI的组合,来找到对应的RequestMapping注解的方法,调用…

Ubuntu20.04突然没网的一种解决办法

本来要学一下点云地图处理,用octomap库,但是提示少了octomap-server库,然后通过下面命令安装的时候: sudo apt install ros-noetic-octomap-server 提示:错误:7 https://mirrors.ustc.edu.cn/ubuntu focal-security …

电商数据仓库

1.数据仓库的数据来源为业务数据库(mysql) 2.通过sqoop将mysql中的业务数据导入到大数据平台(hive) 3.通过hive进行数据计算和数据分析 形成数据报表 4.再通过sqoop将数据报表导出到mysql 5.使用FineReport制作数据报表 1.数据…

Pytorch实战(二):VGG神经网络

文章目录 一、诞生背景二、VGG网络结构2.1VGG块2.2网络运行流程2.3总结 三、实战3.1搭建模型3.2模型训练3.3训练结果可视化3.4模型参数初始化 一、诞生背景 从网络结构中可看出,所有版本VGG均全部使用33大小、步长为1的小卷积核,33卷积核同时也是最小的能…