我基本上看着一個越野車生成文件,這使我與以下方案混淆。Makefile:需要明確混合使用環境變量和變量
default:
echo "Build started with [email protected] at $(ENV_VAR)";\
ENV_VAR=$(NEW_DIR); \
cd $(ENV_VAR); \
$(MAKE);
目的的程序員的:
基本上程序員已經打算重寫該環境變量ENV_VAR用一個新的值(一個目錄路徑)NEW_DIR,然後執行補充遞歸地在該目錄內。
錯誤在此生成的文件:
的錯誤,我看到的是編碼器已經使用「CD $(ENV_VAR)」代替「CD $$(ENV_VAR)」。因此,我們實際上沒有使用「cd」命令的overriden make變量,而是在執行$(MAKE)之前仍然使用環境變量的值。此外,由於不存在路徑,cd命令失敗。最後,我們最終做了遞歸make。
問題我有
正如我在上面的段落中提到,我們在遞歸化妝的場景。有趣的是,我看到的是第二次調用同一個目標時,我看到$(ENV_VAR)反映了NEW_DIR的重寫值。這讓我感到困惑。
樣本輸出:
假設:
NEW_DIR = /新DIR OLD-DIR = /老DIR
輸出:
Build started with default at /old-dir
bin/sh /old-dir: no such file (or) directory
Build started with default at /new-dir
任何建議在此請。
優秀的解釋!非常感謝 –