打印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

寻找一点Makefile糖果;没有任何关键任务。我有这个Makefile输出:

$ 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.*$
-我想这是表达的方式。