配方在调用函数时执行命令行

时间:2017-02-10 18:32:45

标签: makefile

请建议定义makefile的规则

all:
    @echo "Line 1"
    $(info Line 2)
执行

以便

Line 2
Line 1

已打印。接下来的问题是如何克服这种行为,除了分裂成两个目标?

1 个答案:

答案 0 :(得分:2)

在调用任何配方行之前,GNU make将始终展开整个配方(所有行)中的所有make变量和函数。由于$(info ...)是一个make函数,它首先展开,然后扩展打印出您首先看到的“Line 2”。在扩展之后,配方只包含一行传递给shell执行并显示“第2行”。

如果你关心事物的顺序,你应该使用shell命令:

all:
        @echo "Line 1"
        @echo "Line 2"