Невозможно выполнить все предпосылки для цели в make-файле - PullRequest
1 голос
/ 28 июня 2019

Я пытался выполнить все предварительные условия для конкретной цели в make-файле.Но всякий раз, когда обязательным условием является цель с одним / несколькими информационными значениями, я обнаруживаю, что другие предварительные условия не выполняются (которые идут после цели, основанной на информации)

Я пытался уменьшить количество информации в значенияхв предварительных условиях только 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 Ответ

2 голосов
/ 28 июня 2019

В make любой рецепт цели выполняется не более одного раза за сборку.Так что просто не делайте этого, это очень и очень неправильно.

Кроме того, $(info ...) - это подстановка текста, которая выполняется перед любой внешней командой в том же рецепте, поэтому смешивание ее с echo обычноплохая идея.

Если вы пытаетесь избежать повторения длинных штриховых линий, вы всегда можете сделать это с помощью переменных:

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


endef

...

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