У меня есть make-файл со многими независимыми целями, каждая из которых зависит от одной промежуточной цели. Вот пример упрощенного make-файла:
.PHONY: %.world %.hello
all: 0.world 1.world 2.world 3.world 4.world 5.world 6.world
%.world: %.hello
@echo $@
%.hello:
@echo $@
.INTERMEDIATE: %.hello
Когда я запускаю make поочередно, он обрабатывается в следующем порядке:
0.hello
0.world
1.hello
1.world
2.hello
2.world
3.hello
3.world
4.hello
4.world
5.hello
5.world
6.hello
6.world
Но когда я запускаю с -j2
, он запускается все сначала промежуточные файлы, , затем последние:
0.hello
1.hello
2.hello
3.hello
4.hello
5.hello
6.hello
0.world
1.world
2.world
3.world
4.world
5.world
6.world
Оба порядка верны, но при обработке многих сотен целей я бы предпочел Конечные файлы (*.world
) скорее, чем ожидают всех промежуточных файлов. Есть ли способ настроить порядок выполнения так, чтобы он выполнялся примерно так:
0.hello
1.hello
0.world
1.world
2.hello
3.hello
2.world
3.world
4.hello
5.hello
4.world
5.world
6.hello
6.world
Я знаю, что мог бы искусственно принудить принудительно упорядочить любой шаблон c с зависимостями, но мне нужно более общее решение так как я работаю с шаблонными правилами и сотнями автоматически сгенерированных целей.