如何给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

  • 1
    点赞
  • 1
    收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:技术黑板 设计师:CSDN官方博客 返回首页
评论 2

打赏作者

码二哥

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

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

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

打赏作者

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

抵扣说明:

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

余额充值