一,示例
四个文件:main.c;main.h;t_print.c;t_print.h
makefile:写法1)
main:main.o t_print.o
gcc main.o t_print.o -o main
main.o:main.c main.h
gcc -c main.c
t_print.o:t_print.c t_print.h
gcc -c t_print.c
clean:
rm main.o t_print.o
执行:make 或 make main
删除中间文件: make clean
写法2)
main:main.o t_print.o
gcc main.o t_print.o -o main
main.o:main.c main.h
gcc -c main.c
t_print.o:t_print.c t_print.h
gcc -c t_print.c
执行:make 或 make main
写法3)
main:main.o t_print.o
gcc main.o t_print.o -o main
执行:make 或 make main
make 命令会自动推导 main.o的产生所需要的文件
写法4)
object=main.o t_print.o
main:$(object)
gcc $(object) -o main
clean:
rm $(object)
这里使用了变量,但是依赖关系显得有些不清楚。
【特别注意】gcc 前面是 Tab空格键
二,make 执行过程
1)make 在当前目录下找 "Makefile"或"makefile"的文件
2)如果找到,则会找文件中第一个目标文件(target)。如上例子中main
3)如果 main 命令的执行,依赖后面命令执行所产生的文件,则先执行后面命令
4)当main 命令需要的文件生成完毕,则执行main 命令
三,细节
1)可以使用其他的文件名作为makefile 如 Make.linux
make -f Make.linux //-f file 指定文件
2)makefile 中还可以包含其他文件例如
makefile:
object=main.o t_print.o
main:$(object)
gcc $(object) -o main
clean:
rm $(object)
include aa
aa:
cleanmain:
rm main
执行:make cleanmain想当于执行 rm main
说明:make命令开始时,会把找寻include所指出的其他file,并把file中内容放置在当前位置
3)makefile中某条命令前加上 "-"表示无论发生什么错误,都不要报错继续执行
-rm main.o t_print.o // 可以写成通配符 rm *.o
-----夜已经深了----未完待续-----