空命令 (empty command) 就是一個什麼事都不做的命令. 例如:
- header.h: ;
來避免將工作目標視為檔案, 而造成不預期的執行結果.
命令環境
make 執行命令時會從 make 本身繼承其處理環境. 此環境包括當前的工作目標, 檔案描述符以及傳遞自 make 的環境變數. 當一個 subshell 被建立時, make 會將若干變數加入環境:
MAKEFLAGS 變數包含了你傳遞給 make 的命令列選項; MFLAGS 變數的內容是 MAKEFLAGS 的鏡射版本, 存在的理由是為了舊版的相容性; MAKELEVEL 變數的內容代表 make 巢狀調用的次數. 也就是說當 make 遞迴調用 make 時, MAKELEVEL 變數的值就會加一. 對 make 而言, 具單一父程式的子程式將會具有一個同一值的 MAKELEVEL 變數. 這些變數通常會被用來管理遞迴建造 (recursive make).
當然使用者可以透過 export 指令 將任何變數加入子城市的環境之中.
make 用來執行命令的當前工作目錄就是上層 make 的工作目錄. 這個目錄通常就是你用來執行 make 程式的目錄, 不過你可以透過 --directory (或 -C) 參數加以變更:
- -C DIRECTORY, --directory=DIRECTORY
- Change to DIRECTORY before doing anything.
- -f FILE, --file=FILE, --makefile=FILE
- Read FILE as a makefile.
當然能夠讀取 stdin 將有助於與 "cron 為基礎的自動建奏程序" 的互動. 而 makefile 中常見的一個錯誤就是意外的讀取了 stdin:
- $(DATA_FILE): $(RAW_DATA)
- grep pattern $(RAW_DATA_FILES) > $@
- $(DATA_FILE): $(RAW_DATA)
- grep pattern $(RAW_DATA_FILES) /dev/null > $@
沒有留言:
張貼留言