linux应用开发-makefile
一 makefile
工程管理文件,编译成复杂的程序
组装程序
二 规则
1 文件名称:全部小写makefile或者首字母Makefile大写,其他的都不行
2 文件里面#代表注释
三 编写
makefile由许多条规则组成
规则:依赖项
(前面留一个tab)命令
hello:main.o 1.c 2.c
gcc main.c 1.c 2.c -o hello
1 自定义变量:MOBJ= main.c相当于宏 test: $(MOBJ)
2 预定义变量:系统默认的变量CFLAGS = -g -c CC = gcc
3 自动变量:
$*不包含扩展名的目标文件名称
$<第一个依赖文件名称
$?所有时间戳比目标文件晚的文件
[email protected]目标文件完整名称
$^所有不重复的依赖文件gcc $^ -o [email protected]
4 伪目标
.PHONY: install
即便当前文件夹内有install文件,也不执行
5 命令前面加上@符号,make的时候就不会输出信息:@gcc main.c 1.c 2.c -o hello
6 makefile的包含和嵌套
包含:#include testmk.mk
嵌套:gcc -c main.c -C submkdir
7 条件判断
前面不空Tab
if
else
endif
8 makefile管理命令
-C dir读入指定文件夹dir下的makefile
-f file读入当前目录下的file为makefile
-i 忽略所有的错误信息
-l dir指定包含makefile的文件的目录
四 makefile常见问题
1 output不仅仅一个:用多个makefile文件,相互include嵌套或者使用伪目标
2 源文件或者依赖文件很多:makefile分开多文件或者分级
3 嵌套执行makefile:使用-C dir参数来指定读取makefile的目录
五 常见变量
自己写的小程序