Параллельное строительство с gnumake и предпосылками - PullRequest
10 голосов
/ 23 января 2010

Мой первый вопрос (ура!) Касается gnumake и параллельных сборок. Вот краткий пример файла:

.PHONY: tool_1 tool_2 tool_3 tool_4 all tools

all: | tools

tools: | tool_2 tool_3 tool_4

tool_1:
    # commands for tool 1

tool_2: | tool_1
    # commands for tool 2

tool_3: | tool_1
    # commands for tool 3

tool_4: | tool_1
    # commands for tool 4

Если я сделаю make -j для этого парня, то я правильно здесь сделаю, чтобы гарантировать, что команды для tool_1 выполняются ровно один раз, и до того, как make попытается построить любой из tool_[234]?

То, что я ищу, - это чтобы make -j сначала вызывал tool_1, затем параллельно tool_[234], но без выполнения команд для tool_1 три раза. Я надеюсь, что в этом есть смысл. Спасибо за любые предложения или идеи!

1 Ответ

8 голосов
/ 23 января 2010

make -j ведет себя точно так, как вы ожидаете в вашем вопросе. Он не создает зависимости несколько раз.

Что делает этот символ (|) в вашем списке зависимостей?

...