打印Makefile输出中的水平行
寻找一点Makefile糖果;没有任何关键任务。我有这个Makefile输出:打印Makefile输出中的水平行,makefile,output,printf,Makefile,Output,Printf,寻找一点Makefile糖果;没有任何关键任务。我有这个Makefile输出: $ make all The Whole Enchilada target01 Descript1 target02 Descript2 target03 Descript3 target04 Descript4 由于某种原因,我似乎无法让它在输出中打印出一条水平线;寻找这个: $ make all
$ make
all The Whole Enchilada
target01 Descript1
target02 Descript2
target03 Descript3
target04 Descript4
由于某种原因,我似乎无法让它在输出中打印出一条水平线;寻找这个:
$ make
all The Whole Enchilada
target01 Descript1
target02 Descript2
------------------------------------------------ make all ends here
target03 Descript3
target04 Descript4
只是一个带有右对齐消息的简单分隔符
我应该共享,这是我的Makefile的结尾,它打印所有目标:
#-----------------------------------------------------------------------------#
#------------------------ MANAGERIAL OVERHEAD ----------------------------#
#-----------------------------------------------------------------------------#
print-% : ## Print any variable from the Makefile (e.g. make print-VARIABLE);
@echo $* = $($*)
.PHONY: help
help:
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-16s\033[0m %s\n", $$1, $$2}'
.DEFAULT_GOAL := help
如果你能在一行printf语句中帮助我理解它,就可以获得额外的积分;出于某些原因,printf不太适合我的想法。您没有提供当前的
生成文件,但这看起来并不复杂:
$ cat Makefile
all:
@printf "all\t\tThe Whole Enchilada\n"
@printf "target01\tDescript1\n"
@printf "target02\tDescript2\n"
@printf -- "------------------------------------------------ make all ends here\n"
@printf "target03\tDescript3\n"
@printf "target04\tDescript4\n"
$ make
all The Whole Enchilada
target01 Descript1
target02 Descript2
------------------------------------------------ make all ends here
target03 Descript3
target04 Descript4
唯一的问题是,您需要在printf
调用中使用-
来明确声明选项部分已完成,其余部分都是位置参数,否则printf
将尝试将水平线解释为选项。我已更新了原始问题,以包括帮助:
目标;对不起,我不清楚。是否有一种方法可以让它打印出来,而不需要它位于all:
目标中?然后您能否解释一下您希望何时打印此分隔符?看起来像是help
target刚刚打印出所有目标及其描述,但不清楚何时应该打印分隔符。按照上面的示例,就在^target02.*$
-我想这是表达的方式。