VIP20
本课程属于:006-Makefile构建 编程基础与工程化 · 共 20 门相关课程,组合学习更完整。
查看所属VIP全部课程 →
← 返回所属目录 咨询 / 购买

手把手教你写第一个Makefile

📚 共计 30 章节
01
Makefile入门
什么是Makefile、为什么需要Makefile、核心思想:目标、依赖、命令
概念基础
02
第一个Makefile
编写最简单的单文件编译规则,使用make执行,理解流程
实战入门
03
Makefile基本语法
规则结构、目标、依赖、命令、Tab键的重要性
语法规则
04
变量基础
变量定义与使用,自动变量($@ $< $^),赋值方式(= := ?= +=)
变量赋值
05
隐式规则
什么是隐式规则,.c→.o,模式匹配 %.o: %.c
自动模式
06
多文件编译
多源文件编译、链接过程、生成可执行文件
项目链接
07
伪目标
.PHONY作用,常见伪目标(clean, all, install),避免冲突
伪目标清理
08
条件判断
ifeq, ifneq, ifdef, ifndef,根据条件选择编译选项
逻辑分支
09
函数基础
字符串处理(patsubst, subst, strip),文件名函数(dir, notdir, basename, suffix)
函数字符串
10
常用函数
foreach, if, call, shell,自定义函数
函数高级
11
文件搜索
VPATH和vpath,指定源文件搜索路径
路径搜索
12
嵌套Makefile
大型项目模块化,submake调用,传递变量
模块递归
13
Makefile的调试
make -n/-p/-d,info/warning/error函数
调试诊断
14
编译选项管理
CFLAGS, LDFLAGS, LDLIBS,优化级别(-O0~-O3),-g
选项优化
15
头文件依赖
自动生成依赖,gcc -MM,.d文件生成与包含
依赖自动
16
静态模式
静态模式规则(%.o: %.c),filter/filter-out应用
模式过滤
17
库文件的编译
静态库(.a)与动态库(.so)生成使用,链接库路径
库链接
18
Makefile中的路径处理
相对/绝对路径,realpath/abspath,跨平台问题
路径跨平台
19
多目标编译
同时生成多个目标,all目标妙用,并行编译(make -j)
并行多目标
20
Makefile的通用模板
通用C/C++项目模板,Debug/Release模式切换
模板工程
21
Makefile与Git
忽略编译产物(.gitignore),版本号自动生成,提交前构建
Git版本
22
Makefile与测试
添加test目标,运行单元测试,测试报告生成
测试质量
23
Makefile与文档
添加doc目标,Doxygen生成文档,文档清理
文档Doxygen
24
Makefile与安装
install目标,指定安装路径(prefix),文件权限设置
安装部署
25
Makefile与打包
dist目标,生成tar.gz包,版本号嵌入
打包发布
26
Makefile的跨平台
检测操作系统(uname),不同平台编译选项,条件编译
跨平台系统
27
Makefile与第三方库
pkg-config查找,链接外部库,处理库依赖
第三方pkg-config
28
Makefile的性能优化
减少不必要编译,增量编译,ccache缓存
性能缓存
29
Makefile的常见错误
缺少分隔符、Tab问题、变量未定义等解决方法
排错经验
30
综合实战
从零构建完整C项目(src, include, lib, test, doc),功能完备的Makefile
实战完整