上QQ阅读APP看书,第一时间看更新
2 整理Makefile(harib03b)
分割虽然成功了,但现在Makefile又有点长了,足足有113行。虽说出现这种情况是情有可原,但是,像这样:
bootpack.gas : bootpack.c Makefile $(CC1) -o bootpack.gas bootpack.c graphic.gas : graphic.c Makefile $(CC1) -o graphic.gas graphic.c dsctbl.gas : dsctbl.c Makefile $(CC1) -o dsctbl.gas dsctbl.c
或者像这样:
bootpack.nas : bootpack.gas Makefile $(GAS2NASK) bootpack.gas bootpack.nas graphic.nas : graphic.gas Makefile $(GAS2NASK) graphic.gas graphic.nas dsctbl.nas : dsctbl.gas Makefile $(GAS2NASK) dsctbl.gas dsctbl.nas
它们做的都是同样的事。为什么要写这么多同样的东西呢?每次增加新的源文件,都要像这样增加这么多雷同的编译规则,看着都烦。
■■■■■
其实有一个技巧可以将它们归纳起来,这就是利用一般规则。我们可以把上面6个独立的文件生成规则,归纳成以下两个一般规则。
%.gas : %.c Makefile $(CC1) -o $*.gas $*.c %.nas : %.gas Makefile $(GAS2NASK) $*.gas $*.nas
哦,这玩意儿好!真方便。
make.exe会首先寻找普通的生成规则,如果没找到,就尝试用一般规则。所以,即使一般规则和普通生成规则有冲突,也不会有问题。这时候,普通生成规则的优先级更高。比如虽然某个文件的扩展名也是.c,但是想用单独的规则来编译它,这也没问题。真聪明呀。
所以,Makefile中可以用一般规则的地方我们都换成了一般规则。这样程序就精简成了92行。减了21行呢,感觉太棒了。
我们来确认一下,运行“make run”。很好,完全能正常运行。