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 這個東西好幾年了,最近才明白它的做用。
原來說明手冊都有寫,不認真看說明真得很不可取。