1/ 编写简单makefile
test_out: test.o g++ test.o -o test_out test.o: test.cpp test.h g++ -c test.cpp test.h .PHONY:clean #可有可无: 说明clean是个伪目标文件 clean: rm test_out test.o test.h.gch
test_out 为输出文件 由目标文件讲过链接生成,链接的命令是下面一行代码。 注: makefile中命令 必须以 tab键开头,否则会报错
test.o 为经过编译生成的目标文件,他的依赖关系是 test.cpp test.h ,同样编译的命令也必须以tab开头
clean 为clean命令,通过make clean 可以删除make过程当中生成的中间文件。
test.h.gch : 为预编译文件,在编译过程中生成的,以提高编译效率。
http://gcc.gnu.org/onlinedocs/gcc/Precompiled-Headers.html
# : 和shell中相似,用#作为注释符号
注: 冒号后面都是它的依赖文件
2/ makefile 自动推导编译命令,以及后面所跟的.c文件
# 自动推倒之前的makefile objects = main.o kbd.o command.o display.o insert.o search.o files.o utils.o edit : $(objects) cc -o edit $(objects) main.o : main.c defs.h cc -c main.c kbd.o : kbd.c defs.h command.h cc -c kbd.c command.o : command.c defs.h command.h cc -c command.c display.o : display.c defs.h buffer.h cc -c display.c insert.o : insert.c defs.h buffer.h cc -c insert.c search.o : search.c defs.h buffer.h cc -c search.c files.o : files.c defs.h buffer.h command.h cc -c files.c utils.o : utils.c defs.h cc -c utils.c .PHONY : clean clean : rm edit $(objects) #缩减之后的makefile ,省略.c文件 编译命令 objects = main.o kbd.o command.o display.o insert.o search.o files.o utils.o edit : $(objects) cc -o edit $(objects) main.o : defs.h kbd.o : defs.h command.h command.o : defs.h command.h display.o : defs.h buffer.h insert.o : defs.h buffer.h search.o : defs.h buffer.h files.o : defs.h buffer.h command.h utils.o : defs.h .PHONY : clean clean : rm edit $(objects)