我习惯于 GNU make 忽略变量中的额外空格,所以我对以下内容感到惊讶。
## Makefile ##
PKGS = FOO BAR
FOO_DIR = foo
BAR_DIR = bar
# ^-------- Extra space at end of line
include $(foreach pkg, $(PKGS), $($(pkg)_DIR)/comp.mk)
default:
@echo "Hello world!"
如果 之后有空格BAR_DIR = bar
,则 make 失败并出现以下错误:
'make: *** bar: Is a directory. Stop.'
我想我明白这里发生了什么 - 包含文件路径中有一个空格,所以 make 认为我想包含一个目录,因此出现错误。如果空间被删除,并且文件foo/comp.mk
存在bar/comp.mk
,make 将运行而不会出错。
我的问题是,是否有某种方法可以防止导致此故障的额外空间?