makefile伪目标控制子makefile执行
下面的makefile耽误了我半天时间,我要纪念下
代码块
代码块语法遵循标准markdown代码,例如:
SUBDIRS =bin lib # 两个子目录,一个bin,一个lib
.PHONY: subdirs ${SUBDIRS}
subdirs: ${SUBDIRS} # 这句不明白,感觉有点多余
${SUBDIRS}: #伪目标,类似于clean
${MAKE} -C $@
bin: lib # 依赖,表示在进入bin之前应该先进入lib目录
这里的subdirs这makefile的第一个目标,同时也是伪目标。而后面的 (SUBDIRS)则是作为aprerequisite前提。subdirs: {SUBDIRS}这句不能去掉么?答案是不能,不然make的时候这里展开,bin作为makefile 的第一个目标,但是由于bin目录的存在,导致make失效。