参考链接:http://blog.csdn.net/haoel/article/details/2889
当命令和依赖关系描述在同一行时,可以使用分号 分隔。
当命令太长时,也可以用反斜杠 \ 来分隔成多行,分隔出的行首有没有tab都可以(空格更无所谓了)。
在指定文件目录时,可以用~来表示系统home目录,因为make会以shell来执行。
VPATH Makefile文件中的特殊变量。它指定make可以去哪些目录找寻依赖文件和目标文件。
默认不定义它,则在当前目录找,多目录用冒号(:)分隔
vpath是一个命令,用于查找匹配目录。用%来匹配文件名中的零个或若干字符
vpath pattern directories 在目录中查找与模式匹配的文件
vpath pattern 清除当前模式的查找目录
vpath 清除所有vpath定义的查找目录
mymk = ~/Desktop/b.mkf
-include $(mymk)
edit : $(objs)
cc -o edit $(objs)
#VPATH = srcs:headers
vpath %.c srcs:headers
vpath %.h srcs:headers
#vpath %
#vpath
main.o:
kbd.o:
command.o:
display.o:
insert.o:
search.o:
utils.o: ; cc -c utils.c
files.o: ; cc -c -g files.c
.PHONY : clean
clean :
# -rm edit $(objs)
-rm *.o edit伪目标作 首目标
#定义了一个伪目标all,为makefie的首目标。前面说,第1个首目标就是makefile生成的执行目标,而这里是伪目标,所以不会生成执行文件。
# 直接make all 或者 make 即可。这样会生成三个执行文件 AA BB CC
all : AA BB CC
.PHONY : all
AA : A.o command.o
cc -o AA A.o command.o
BB : B.o
cc -o BB B.o
CC : C.o utils.o
cc -o CC C.o utils.o
伪目标 依赖 伪目标
#cleanall 依赖(包含)了 cleanobj cleandiff
.PHONY: cleanall cleanobj cleandiff
cleanall : cleanobj cleandiff
-rm AA BB CC edit
cleanobj :
-rm *.o
cleandiff :
-rm *.diff
原文:http://blog.csdn.net/jjwwmlp456/article/details/40895743