【学习笔记】cmake

过程

配置阶段-生成makefile文件

cmake -G"MinGW Makefiles" ...

构建阶段- 生成目标文件

命令

DEPENDS

时间戳检查 :CMake 通过比较文件时间戳来判断是否需要重新构建

COMMENT

COMMENT "Compiling ${source_file}"

COMMENT 选项指定的消息是在命令执行 之前 打印的。

DEPENDS 指令详解

DEPENDS 是 CMake 中用于 声明依赖关系 的核心指令,它告诉构建系统: 目标文件/目标的生成依赖于哪些文件或其他目标 。

增量编译的基础 : DEPENDS 让 CMake/Make 能够判断何时需要重新构建。当依赖的文件或目标发生变化(时间戳更新)时,才会触发重新编译。

add_custom_target

add_custom_command

目标的依赖关系:DEPENDS

关键字

ALL

ALL 关键字表示这是默认构建目标,执行 make 时会自动构建

增量式编译的核心概念

只重新编译 发生变化的源文件及其依赖 ,而非每次都重新编译整个项目。这对于大型项目可以显著缩短构建时间。

核心原理 :通过比较文件的 时间戳 或 内容哈希 ,判断文件是否需要重新编译。

增量编译的本质是 依赖跟踪 :让构建系统知道每个目标文件依赖哪些源文件和头文件,只有当依赖文件发生变化时才重新编译

如何判断是否需要编译

导入依赖

这样表示依赖被正确的导入:生成dep文件,手动解析后使用DEPENS命令;【DEPFILE 无法使用,是给ninja使用的】

增量编译过程

依赖文件-Dependency file

依赖文件的作用头文件被修改时,自动重新编译所有包含它的源文件

编译选项

相关推荐
m4Rk_15 小时前
【论文阅读】Agent记忆机制(112):MemFit——保留对话原文,用多路检索降低长期记忆成本
论文阅读·人工智能·学习·开源·github
kyrie_sakura15 小时前
大模型学习17 大模型学习 - LangChain1_概述
学习
程序猿乐锅16 小时前
【从0-1学习Python | 第九篇】继承
开发语言·后端·python·学习·fastapi
Wanderer X16 小时前
MiniMax-H3(ref2va)架构与推理方法笔记
笔记
深圳老胡16 小时前
STM32C562RET6 外部中断详解:从 EXTI 原理到 GPIO 外部中断实战
笔记·stm32·单片机·代码规范·1024程序员节
海绵宝宝转agent16 小时前
leetcodehot100个人题解
java·笔记·学习·算法
学长毕设1 天前
基于SpringBoot的青少年编程学习平台系统-附源码
spring boot·学习·青少年编程
小小de风呀1 天前
de风——【从零开始学习Linux】(九):进程基础 —— 从冯诺依曼体系到 fork 创建进程
linux·学习
李某学编程1 天前
基于ARM的微机原理学习笔记(一)
arm开发·笔记·学习
Song_RsHt1 天前
Redis 与微服务,什么场景下无可替代
java·redis·后端·学习·微服务