标签:makefile
参考链接: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
标签:makefile
原文地址:http://blog.csdn.net/jjwwmlp456/article/details/40895743