私はGNUが変数内の余分な空白を無視することに慣れているので、次のことに驚きました。
## 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.'
ここで何が起こっているのか理解していると思います。インクルードファイルのパスにスペースがあるので、ディレクトリをインクルードしたいと考えてください。エラーが発生します。スペースが削除され、ファイルfoo/comp.mk
がbar/comp.mk
存在する場合、makeはエラーなしで実行されます。
私の質問は、この障害を引き起こす余分なスペースから保護する方法はありますか?