Выполнять процессы параллельно, ждать и выполнять остальные - PullRequest
0 голосов
/ 03 июля 2018

Я использую следующий код для параллельного выполнения целей. Теперь я хочу, чтобы он работал параллельно, но есть некоторые цели, которые необходимо выполнить в конце, например wait для 3 процессов, которые выполняются параллельно, чтобы завершить, а затем выполнить еще 2 процесса. Как я могу это сделать?

Например, здесь pack и cleanup до выполняются после module1 и module2 будут работать параллельно .

NPROCS = $(shell sysctl hw.ncpu  | grep -o '[0-9]\+')
MAKEFLAGS += -j$(NPROCS)
all: module1 module2

.PHONY: module1
module1:
    @echo "run module 1"
    DIR=$(PWD)
    @echo $(DIR)

.PHONY: module2
module2:
    @echo "run module2”
.PHONY:
pack:
   pack $(DIR)
cleanup: 
    gbt clean $(DIR)

1 Ответ

0 голосов
/ 03 июля 2018

Для этого и необходимы предпосылки, одна из сильных сторон make.

Изменение:

pack:

pack: module1 module2

Что говорит make, что цель pack имеет две предпосылки; module1 и module2.

Это означает, что make не будет работать pack до тех пор, пока module1 и module2 не завершат работу с завершением . Будь они работают параллельно, не имеет значения.


Если у вас много предпосылок, вы можете поместить их в макрос, например:

modules = module1 module2 …

pack: $(modules)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...