makefile запускает цели параллельно - PullRequest
0 голосов
/ 03 июля 2018

У меня есть следующий make-файл с двумя правилами.

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

т.е. запускать цели module1 & 2 параллельно.

Это make-файл:

all: module1 module2

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

.PHONY: module2
module2:
    @echo "run module2”

cleanup: 
    fzr clean $(DIR)

1 Ответ

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

Вы можете установить make опции, которые вы обычно передаете, чтобы сделать их вызовом из командной строки в самом файле makefile. Добавьте эту строку в ваш makefile

MAKEFLAGS += -j2

и вы можете вызывать make без флага -j, он по-прежнему порождает два процесса для параллельного построения целей, когда они не зависят друг от друга. Чтобы автоматически определить количество создаваемых заданий, вы можете использовать это на linux

NPROCS = $(shell grep -c 'processor' /proc/cpuinfo)
MAKEFLAGS += -j$(NPROCS)

и на MacOS

NPROCS = $(shell sysctl hw.ncpu  | grep -o '[0-9]\+')
MAKEFLAGS += -j$(NPROCS)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...