有一条命令如下:
nroff -man flip.1 > flip.man
该命令会编译文件flip.1,并将输出保存在flip.man
写一个Makefile, 用make man来执行它,如果这样写:
all: man
nroff -man flip.1 > flip.man
该命令会编译文件flip.1,并将输出保存在flip.man
写一个Makefile, 用make man来执行它,如果这样写:
all: man
man: flip.1
nroff -man flip.1 > flip.man
这里因为man并不是一个文件,只相当于一个标识符,不能去比较man和flip.1的时间戳。因此每一次执行make man的时候,都会执行 nroff -man flip.1 > flip.man, 即使flip.1的时间戳没有改变。所以,应该写成这样:
all: man
man: flip.man
flip.man: flip.1
nroff -man flip.1 > flip.man
本文介绍了一个具体的Makefile案例,展示了如何正确地设置依赖关系以避免不必要的编译步骤。通过对比两种不同的Makefile写法,解释了如何利用目标文件而非标识符进行依赖检查,确保只有在源文件更改时才重新编译。
797

被折叠的 条评论
为什么被折叠?



