Makefile:包含第二个文件时重铸宏
Makefile: macro is recast when including second file
我有一个 make 文件,其中有两个这样的包含:
$ cat /src/Makefile
include ../rules.mk
Test:
echo $(DIST_ROOT)
include src.base.mk
Test2:
echo $(DIST_ROOT)
. PHONY: Test Test2
$ cat /rules.mk
DIST_ROOT = $(abspath $(dir $(lastword $(MAKEFILE_LIST))))
$ cat /src/src.base.mk
srcdir = $(DIST_ROOT)/src
问题是两者的输出都是 /src
,但应该是 /
。
这是怎么发生的,我该如何解决?
我找到了问题并进行了修复。
回答我自己的问题:
当用等号分配一个变量时,变量每次都被强制转换。
我需要添加的是“:”,所以它会被转换一次并根据需要进行设置。
基于此 question.
我有一个 make 文件,其中有两个这样的包含:
$ cat /src/Makefile
include ../rules.mk
Test:
echo $(DIST_ROOT)
include src.base.mk
Test2:
echo $(DIST_ROOT)
. PHONY: Test Test2
$ cat /rules.mk
DIST_ROOT = $(abspath $(dir $(lastword $(MAKEFILE_LIST))))
$ cat /src/src.base.mk
srcdir = $(DIST_ROOT)/src
问题是两者的输出都是 /src
,但应该是 /
。
这是怎么发生的,我该如何解决?
我找到了问题并进行了修复。
回答我自己的问题:
当用等号分配一个变量时,变量每次都被强制转换。
我需要添加的是“:”,所以它会被转换一次并根据需要进行设置。
基于此 question.