Makefile是Linux系统下的自动化编译文件,一旦写好了一个Makefile文件,以后就只需要执行make命令就能安装Makefile文件内的规则编译目标程序了。它又像一个shell脚本,其中也可以执行操作系统的指令。
Makefile的三种写法
1、复杂写法:
bin/hello : obj/add.o obj/sub.o obj/hello.o gcc -o bin/hello obj/add.o obj/sub.o obj/hello.o obj/add.o : src/add.c gcc -I include -c -o obj/add.o src/add.c obj/sub.o : src/sub.c gcc -I include -c -o obj/sub.o src/sub.c obj/hello.o :src/hello.c gcc -I include -c -o obj/hello.o src/hello.c clean : rm -rf obj/*.o bin/hello
2、简单写法:
bin/hello : obj/add.o obj/sub.o obj/hello.o gcc -o $@ $^ obj/add.o : src/add.c gcc -I include -c -o $@ $< obj/sub.o : src/sub.c gcc -I include -c -o $@ $< obj/hello.o :src/hello.c gcc -I include -c -o $@ $< clean : rm -rf obj/*.o bin/hello
3、更简单写法:
DD=-I include CC=gcc bin/hello : obj/add.o obj/sub.o obj/hello.o $(CC) -o $@ $^ obj/%.o : src/%.c $(CC) $(DD) -c -o $@ $< clean : rm -rf obj/*.o bin/hello
上面而命令中的
$< 表示依赖目标中的第一个目标名字
$@ 表示目标集
$^ 所有的依赖目标的集合。以空格分隔。如果在依赖目标中有多个重复的,那个这个变量会去除重复的依赖目标,只保留一份。
除非注明,文章均为CppLive 编程在线原创,转载请注明出处,谢谢。