Принудительное выполнение предварительных условий в Makefile - программирование
Подтвердить что ты не робот

Принудительное выполнение предварительных условий в Makefile

У меня есть сторонний 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 на ядре из-за некоторых других зависимостей).

4b9b3361

Ответ 2

Не могли бы вы просто вызвать Make в вашей сборке script с двумя целями в правильном порядке, например.

make T2 T1

Таким образом, вам не нужно вносить какие-либо изменения в T1.