我一直在尝试对makefile中的特定目标执行所有先决条件。但是只要前提条件是具有单个/多个信息值的目标,我就会发现其他前提条件没有执行(在基于“信息”的目标之后)
我尝试将先决条件中的值中的信息数量减少为1。在这种情况下,我也找不到其他要执行的先决条件。 因此,我的问题是了解如何执行基于单行/多行信息的先决条件并继续执行其他先决条件。
# Define new line and separator
.PHONY:newline
newline:
@echo
.PHONY:separator
separator:
$(info -------------------------------)
# Print the project details
.PHONY:project
project:
$(info Project Details)
$(info Author : xyz)
# Help menu
.PHONY:help
help: newline separator project separator newline
Expected outcome
$ make help
-------------------------------
Project Details
Author : xyz
-------------------------------
Outcome received
$ make help
-------------------------------
Project Details
Author : xyz
答案 0 :(得分:2)
在制作过程中,每个目标最多只能执行一次配方。所以只是不要这样做,这是非常非常错误的。
此外,$(info ...)
是文本替换,在同一配方中的任何外部命令之前执行,因此通常将其与echo
混合是一个坏主意。
如果要避免重复长虚线,可以始终使用变量进行此操作:
sep := --------------------
define nl :=
endef
...
help:
$(info $(nl)$(sep))
$(info Project details)
...
$(info $(sep)$(nl))