makefile 三要素:
目标
依赖
规则命令
写法:
目标:依赖
规则命令
v1:
缺点: 如果更改其中一个文件,所有源码都需要重新编译
可以考虑编译过程分解,先生成.o文件,使用.o文件得到结果
v2:
这样做的话,如果改变main.c,只需重新编译main.c, add.c sub.c无需重新生成.o文件
函数:wildcard 进行文件匹配
patsubst 内容替换
wildcard用法:
patsubst用法:
makefile的变量:
1. $@ :目标
2. $^ :全部依赖
3. $< :第一个依赖
4. $? :第一个变化的依赖
v3:
注意: $@,$^这样的变量只能在规则中出现
增加删除功能:
v4:
make clean
若不想让命令出现在终端,前面加一个@
前面加-号,表示如果此条语句报错,仍然执行后面语句
.PHONY 表示clean是一个伪目标,即使当前目录下有clean这个文件,也不会把这个文件当成目标。防止歧义。
若还想同时生成一个其他app
简洁:make
若makefile文件名为x, 则 make -f x
若为makefile, 则直接 make 即可