例如:
# Some stuff
all: some dependencies
@$(CC) -o foo.o foo.c
@true foo.o
@some other operation
“真正的foo.o”行的目的是什么?
答案 0 :(得分:6)
通常,这是从Makefile生成器(例如automake
)输出的。 true
将替换为需要它的平台上的实际命令。最常见的情况是不自动维护静态归档索引的平台;代码看起来像
foo.a: foo.o bar.o baz.o ...
ar rv foo.a foo.o bar.o baz.o ...
true foo.a
但是在某些平台上(那些没有System V或GNU ar
的平台)它将改为
foo.a: foo.o bar.o baz.o ...
ar rv foo.a foo.o bar.o baz.o ...
ranlib foo.a
它不是简单地删除的原因是m4
和其他宏处理器替换行上的文本要比有条件地删除行更容易。 (可以这样做,但已知高级m4
hackery导致精神错乱。:)