无法执行makefile中目标的所有先决条件

时间:2019-06-28 05:44:38

标签: makefile gnu-make gnu

我一直在尝试对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

1 个答案:

答案 0 :(得分:2)

在制作过程中,每个目标最多只能执行一次配方。所以只是不要这样做,这是非常非常错误的。

此外,$(info ...)是文本替换,在同一配方中的任何外部命令之前执行,因此通常将其与echo混合是一个坏主意。

如果要避免重复长虚线,可以始终使用变量进行此操作:

sep := --------------------
define nl :=


endef

...

help:
    $(info $(nl)$(sep))
    $(info Project details)
    ...
    $(info $(sep)$(nl))