Makefile Rule
Makefile Rule 格式如下
|
|
- target: 要產生的檔案名稱
- prerequisites: 產生 target 所需要的檔案
- recipe: 要執行的動作
這裡準備一個寫 golang 會用到的 Makefile 如下面:
|
|
執行 make build
,Make 會先檢查有沒有 build
這個檔案,當檔案不存在的時候就執行 go build ...
指令
問題
如果現在存在一個 build
檔案, go build ...
指令就不會再被執行了
這個情況就需要用到 Phony Targets
Phony Targets
把 build 設定成 phony 的 prerequisites,如下面:
|
|
執行 make build
,Make 就不再會檢查檔案,go build ...
指令都會正常運作了
這樣設定 Phony Target 還會有兩點好處:
- 避免 target 跟同名檔案衝突
- 改善效能
心得
我看著 .PHONY
這個東西好幾年了,最近才明白它的做用。
原來說明手冊都有寫,不認真看說明真得很不可取。