折腾了:
【已解决】Mac中写Makefile或脚步实现自动化执行命令
后,想要make help输出用法。
一种是自己写echo或info,但是需要找个合适的例子去参考。
make help
Add a help target to a Makefile that will allow all targets to be self documenting
好像(才知道)可以自动生成help信息?
还有库:
Linux make command information and examples
# target: dir_info – For debug, to Dispay current directory/folder related info.
dir_info:
@echo MAKEFILE_LIST=$(MAKEFILE_LIST)
# target: help – Display callable targets.
help:
@egrep “^# target:” [Mm]akefile
效果:
➜ http_summary git:(master) ✗ make help
####################################################################################################
Author: crifan.com
Version: 20171207
Function: Auto use gitbook to generated files: website/pdf/epub/mobi. Run ‘make help’ to see usage
####################################################################################################
# target: dir_info – For debug, to Dispay current directory/folder related info.
# target: help – Display callable targets.
Add a help target to a Makefile that will allow all targets to be self documenting
【总结】
最后在Makefile的最后,加上:
<code>TARGET_MAX_CHAR_NUM=20 </code>
## Show help
help:
@echo ”
@echo ‘Usage:’
@echo ‘ make <target>’
@echo ”
@echo ‘Targets:’
@awk ‘/^[a-zA-Z\-\_0-9]+:/ { \
helpMessage = match(lastLine, /^## (.*)/); \
if (helpMessage) { \
helpCommand = substr($$1, 0, index($$1, “:”)-1); \
helpMessage = substr(lastLine, RSTART + 3, RLENGTH); \
printf ” %-$(TARGET_MAX_CHAR_NUM)s %s\n”, helpCommand, helpMessage; \
} \
} \
{ lastLine = $$0 }’ $(MAKEFILE_LIST)
其他地方的target,写成:
<code>## your target description your_target: xxxx </code>
即可自动生成help的信息。
相关的代码:
<code> ## Generate Mobi file mobi: clean_mobi create_foler_mobi gitbook mobi $(CURRENT_DIR_NOSLASH) $(MOBI_FULLNAME) ## Generate all files: website/pdf/epub/mobi all: website pdf epub mobi ################################################################################ # Help ################################################################################ TARGET_MAX_CHAR_NUM=20 ## Show help help: @echo '' @echo 'Usage:' @echo ' make <target>' @echo '' @echo 'Targets:' @awk '/^[a-zA-Z\-\_0-9]+:/ { \ helpMessage = match(lastLine, /^## (.*)/); \ if (helpMessage) { \ helpCommand = substr($$1, 0, index($$1, ":")-1); \ helpMessage = substr(lastLine, RSTART + 3, RLENGTH); \ printf " %-$(TARGET_MAX_CHAR_NUM)s %s\n", helpCommand, helpMessage; \ } \ } \ { lastLine = $$0 }' $(MAKEFILE_LIST) </code>
效果为:
<code>➜ http_summary git:(master) ✗ make help </code>
<span style="font-family: Monaco; font-size: 12px; color: rgb(51, 51, 51);"–<——————————————————————————
Author: crifan.com
Version: 20171207
Function: Auto use gitbook to generated files: website/pdf/epub/mobi
Run ‘make help’ to see usage
<span style="font-family: Monaco; font-size: 12px; color: rgb(51, 51, 51);"–<——————————————————————————
Usage:
make <target>
Targets:
debug_dir [Debug] Dispay current directory related info
create_foler_website Create folder for gitbook website
create_foler_pdf Create folder for pdf
create_foler_epub Create folder for epub
create_foler_mobi Create folder for mobi
create_foler_all Create folder for all target: website/pdf/epub/mobi
clean_website Clean generated gitbook website
clean_pdf Clean generated PDF file
clean_epub Clean generated ePub file
clean_mobi Clean generated Mobi file
clean_all Clean all generated files
website Generate gitbook website
pdf Generate PDF file
epub Generate ePub file
mobi Generate Mobi file
all Generate all files: website/pdf/epub/mobi
help Show help
转载请注明:在路上 » 【已解决】给makefile添加make help时输出帮助信息