使用Make recent(v3.81)時,我遇到了一些奇怪的行爲。我可以告訴Make忽略環境變量嗎?
假設我有下面的Makefile:
FOOBAR = $(shell find nonexistentdirectory -iname "foobar" | tr '\n' ' ')
all:
@echo "Hi"
clean:
@echo "Hi again"
看起來非常簡單夠了吧?值得注意的是,FOOBAR
是一個「遞歸擴展變量」,所以在我引用它之前不應該對它進行評估。請注意,我從不參考它。另請注意,nonexistentdirectory
不像您所預期的那樣存在。
現在假設我設置在外殼FOOBAR
之前我調用make目標:
compy386$ FOOBAR="stuff" make clean
find: nonexistentdirectory: No such file or directory
Hi again
爲什麼FOOBAR
正在評估?顯然這與變量在shell中定義的事實有關。我是否應該預計用戶可能在其shell中設置了變量?我在這裏做錯了什麼?!