格式:
目标项: 依赖一 依赖二 … <Tab>command |
示例:
/*这里只有一个依赖项main.c*/ main : main.c gcc main.c –o main |
编译多个文件示例:
/* 这个Makefile将main.c、add.c、sub.c这三个文件编译成对应的.o文件, 然后将这三个.o文件编译成名叫out的可执行程序 */ out : main.o add.o sub.o gcc –o out main.o add.o sub.o main.o : main.c gcc –c main.c –o main.o add.o : add.c gcc –c add.c –o add.o sub.o : sub.c gcc –c sub.c –o sub.o clean: rm –rf *.o out |
在Makefile中使用变量的例子
/* 将main.o add.o sub.o这三个名字保存到OBJECT这个变量中 */ OBJECT = main.o add.o sub.o
out : $(OBJECT) gcc –o $@ $^ $@指的是out目标项, $^表示所有的依赖项(会自动去掉重复项) main.o : main.c gcc –c $< –o $@ $< 指的是第一个依赖项main.c add.o : add.c gcc –c $< –o $@ sub.o : sub.c gcc –c $< –o $@ clean: rm –rf $(OBJECT) out |
var := value //变量定义 var += value2 //变量追加value2 var ?= value //表示若没有给var赋值则默认给var变量赋值为value ${var:a=b} //表示将var变量中a字符串替换为b |
Makefile嵌套
subsystem: $(MAKE) -C subdir //表示先进入subdir目录下,然后进行make操作 |
Makefile传递变量到下一级的Makefile中
export var = value //传递var变量到下一级Makefile中 export //传递所有变量到下一级中 unexport //不传递变量到下一级中 |