如何给Makefile文件输出帮助信息呢?

如何给Makefile文件输出帮助信息呢?
查看每个target说明信息呢?

1、例子:如Makefile文件内容为:

build:
        @echo "docker build -t my-mysql:5.7 ."

rm:
        @echo "docker rmi -f my-mysql:5.7"
deploy:
        @echo "deploy my-mysql image to kubernetes"

如果我们想查看一下Makefile的帮助文档,如何做呢

2、方式一: 仅仅列出当前Makefile里有哪些target?

build:
        @echo "docker build -t my-mysql:5.7 ."

rm:
        @echo "docker rmi -f my-mysql:5.7"
deploy:
        @echo "deploy my-mysql image to kubernetes"

.PHONY: help
help:
        make --print-data-base --question |             \
        awk '/^[^.%][-A-Za-z0-9_]*:/                    \
        { print substr($$1, 1, length($$1)-1) }' |      \
        sort


将空格改成tab
打印出makefile的帮助信息

这个方式,并不全面,仅仅是打印出了target信息,并没有打印出每个target的帮助信息是什么?

3、方式二:列出target,以及对应target的描述信息

## build my-mysql image, version 5.7
build:
        @echo "docker build -t my-mysql:5.7 ."

## delete my-mysql image
rm:
        @echo "docker rmi -f my-mysql:5.7"
deploy:
        @echo "deploy my-mysql image to kubernetes"

################################################################################
# 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)

3.1、如何给Makefile添加帮助信息

添加帮助信息的步骤

3.2、测试,查看效果

make help

3.3、注意

如果copy过去后,如果格式不对的话,可能需要将空格,改成tab

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码二哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值