请建议定义makefile的规则
all:
@echo "Line 1"
$(info Line 2)
执行以便
Line 2
Line 1
已打印。接下来的问题是如何克服这种行为,除了分裂成两个目标?
答案 0 :(得分:2)
在调用任何配方行之前,GNU make将始终展开整个配方(所有行)中的所有make变量和函数。由于$(info ...)
是一个make函数,它首先展开,然后扩展打印出您首先看到的“Line 2”。在扩展之后,配方只包含一行传递给shell执行并显示“第2行”。
如果你关心事物的顺序,你应该使用shell命令:
all:
@echo "Line 1"
@echo "Line 2"