Как использовать Makefile с меткой NOTPARALLEL?
У меня есть 5 ярлыков в Makefile:
all: label1 label2 label3 label4 last_label
я хочу last_label
должно быть сделано в прошлом, и я хочу использовать make -j
, Если я использую .NOTPARALLEL
, это сделает их всех NOTPARALLEL
Любое предложение о том, как это сделать?
2 ответа
Создайте цель, указав четыре цели, которые могут выполняться параллельно, и включите это и last_label
в all
цель:
intermediate: label1 label2 label3 label4
all:
$(MAKE) intermediate
$(MAKE) last_label
Это выполнит цели, указанные в intermediate
параллельно, но intermediate
а также last_label
будет вынужден последовательно.
(Обратите внимание, что ведущий пробел перед $(MAKE)
это TAB
персонаж.)
Если причина last_label
нужно запустить в последнюю очередь, что ему нужны данные из других меток, лучший подход будет сказать make
об этой зависимости:
all: last_label
last_label: label1 label2 label3 label4
Если нет истинной зависимости (то есть, если вы не хотите last_label
будет перестроен, если один из других изменится), и если вы используете GNU Make, вы можете указать их как зависимости "только для заказа":make
просто убедитесь, что они существуют, прежде чем last_label
построено:
all: last_label
last_label: | label1 label2 label3 label4