Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Makefile 调用函数时,配方行执行顺序_Makefile - Fatal编程技术网

Makefile 调用函数时,配方行执行顺序

Makefile 调用函数时,配方行执行顺序,makefile,Makefile,请建议定义该makefile的规则 all: @echo "Line 1" $(info Line 2) 被执行以使 Line 2 Line 1 是印刷的。下一个问题是,除了分成两个目标之外,如何克服这种行为?GNU make在调用任何配方行之前,总是会扩展整个配方(所有行)中的所有make变量和函数。由于$(info…是一个make函数,因此首先展开它,然后展开将首先打印您看到的“第2行”。在该扩展之后,配方只包含一行,该行被传递给shell执行,并显示“第2行” 如果您关

请建议定义该makefile的规则

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

Line 2
Line 1

是印刷的。下一个问题是,除了分成两个目标之外,如何克服这种行为?

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

如果您关心事情的顺序,您应该只使用shell命令:

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

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

如果您关心事情的顺序,您应该只使用shell命令:

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