У меня есть сторонний make файл, и я бы хотел, чтобы одна из целей (T1) не была создана до тех пор, пока не будет создана другая, настраиваемая цель (T2). Обычно это было бы достигнуто, сделав T2 необходимым условием T1. НО, T1 использует $^ в одном из своих правил. Поэтому, добавив предварительное условие, я в итоге разбиваю сборку... Что у меня есть:
T1: x y z T2
$(MAKE) -j $^;
# fails because T2 should not be passed to the make!!!
.PHONY: T2
T2:
#do some linking and prep for T1
Есть ли хороший способ гарантировать, что T2 запускается до T1? (Примечание: приведенный выше пример фактически упрощен бит. T1 на самом деле является целью vmlinux в make файле ядра Linux, поэтому переписывать его не только сложно, но и делает код не переносимым. Кроме того, я не могу запустить T2 до вызов make на ядре из-за некоторых других зависимостей).