在LINUX下开发,如果不会用Makefile,那是一件多么可笑的事!以前只学了一些Makefile的最最基础的知识,今天又在《Linux c 编程一站式学习》中看到了Makefile的用法,于是下定决心把自己的Makefile提高一个档次。关于隐含规则如果一个目标在Makefile中的所有规则都没有命令列表,make 会尝试在内建的隐含规则(Implicit Rule)数据库中查找适用的规则。make 的隐含规则数据库可以用make -p命令打印,打印出来的格式也是Makefile的格式,包括很多变量和规则。关于变量“=”的好处是我们可以把变量的值推迟到后面定义,但是不合理的定义可能会造成死循环而导致make退出。“:=”可以在变量定义时立即展开还有一个比较有用的赋值运算符是?=,例如foo ?= $(bar)的意思是:如果foo 没有定义过,那么?=相当于=,定义foo 的值是$(bar),但不立即展开;如果先前已经定义了foo ,则什么也不做,不会给foo 重新赋值。“+=” 运算符可以给变量追加值。关于特殊变量$@ ,表示规则中的目标。$< ,表示规则中的第一个条件。$?,表示规则中所有比目标新的条件,组成一个列表,以空格分隔。$^ ,表示规则中的所有条件,组成一个列表,以空格分隔。例如前面写过的这条规则:main: main.o stack.o maze.ogcc mai
...
继续阅读
(25)