在 Lobsters 上看到「Self-documenting Makefiles」這篇裡面提到怎麼設計 make help
的方法,還蠻不錯的。
他的想法是讓 make help
去讀 Makefile
自己內容,把註解 #
後面的文字拉出來,產生出一包 help document,這邊拿他最後的成品來看:
.PHONY: help help: # Shows interactive help. @cat README.md @echo @echo "make variables:" @echo @sed -e 's/^\([^ ]\+\)[ ]*?=[^#]\+#\(.*\)$$/\1 \2/p;d' Makefile | column -t -l 2 | sort @echo @echo "make targets:" @echo @sed -e's/^\([^: ]\+\):.*#\(.*\)$$/\1 \2/p;d' Makefile | column -t -l 2 | sort
變數的部分這樣設定說明的部分:
DEVELOPER ?= 0# Set to 1 to enable developer builds.
而 target 的部分這樣設定說明的部分:
target/debug/program: # Builds the program. target/debug/program: src/main.rs src/lib.rs
主要是抓概念,實務上可以自行變通,像是可以修改 sed 的替換規則,讓他支援 double-colon rules (::
)。