Makefile文件编写总结
语法规则
一、显示规则:
1.目标文件:依赖文件
[TAB]指令
例子:
hello.i:hello.c
gcc -E hello.c -o hello.i
含义为:通过gcc命令由“hello.c”文件得到“hello.i”文件。
2.第一个目标文件应为欲得到的最终目标
(自顶而下分解任务)
3.伪目标:
在“.PHONY:”后添加伪目标(即不会被创建文件的目标)及相应命令。
如:
.PHONY:
clean:
rm -rf hello.o hello.i hello
其中第二行的伪目标名clean可随意起名,例子中在makefile文件目录下使用“make clean”命令可删除hello.o、 hello.i、 hello三个文件。
二、变量:
变量 =(替换) +=(追加) :=(恒等于)
使用变量: $(变量名) 替换
例子:
TAR = test
OBJ = test1.o test2.o
CC := gcc
$(TAR):$(OBJ)
$(CC) $(OBJ) -o $(TAR)
例子含义:使用gcc编译器通过test1.o与test2.o两个文件生成test可执行文件。
三、隐含规则:
%.c %.o 任意的.c或.o文件
*.c *.o 所有的.c或.o文件
如:
%.o:%.c
gcc -c %.c -o %.o
例子含义:使目录下所有的.c文件生成对应的.o文件。
四、通配符:
$@ : 所有的目标文件
$^ : 所有的依赖文件
$< : 所有的依赖文件的第一个文件
如:
test:test1.o test2.o
gcc $^ -o $@
例子含义:使用test1.o test2.o两个文件生成test可执行文件。
例子
TAR = test
OBJ = test1.o test2.o test3.o
CC:=gcc
RMRF:=rm -rf
$(TAR):$(OBJ)
$(CC) $^ -o $@
%.o:%.c
$(CC) -c $^ -o $@
.PHONY:
clean:
RMRF $(TAR) $(OBJ)
例子解释:
使用make命令时:
- 通过test1.c test2.c test3.c三个文件生成test1.o test2.o test3.o。
- 通过test1.o test2.o test3.o三个文件生成test可执行文件。
使用make clean命令时:
删除TAR与OBJ两个变量包含的文件,包括:test1.o test2.o test3.o三个文件以及test可执行文件。
930

被折叠的 条评论
为什么被折叠?



