我习惯于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将不会出错。
我的问题是,是否有一种方法可以防止额外的空格导致此失败?