2013-05-30 1 views
1

У меня есть 5 этикетки в Makefile:Как использовать makefile с меткой NOTPARALLEL?

all: label1 label2 label3 label4 last_label 

Я хочу last_label быть сделано в прошлом, и я хочу использовать make -j. Если я использую .NOTPARALLEL, он сделает все из них NOTPARALLEL, любое предложение о том, как это сделать?

ответ

3

Создайте цель, указав четыре цели, которые могут быть выполнены параллельно & включают это и last_label в all цели:

intermediate: label1 label2 label3 label4 

all: 
     $(MAKE) intermediate 
     $(MAKE) last_label 

Это казнить бы цели, указанные в intermediate параллельно, но intermediate и last_label бы быть принудительно последовательным.

(Обратите внимание, что ведущий пробел перед $(MAKE) является TAB характер.)

+0

, даже если я использую make -j7? – shd

+0

Да. Решение будет работать параллельно, независимо от количества одновременных заданий. – devnull

+0

Я предполагаю, что цель «промежуточная» должна появиться после «все», иначе она станет целевой по умолчанию. – TrueY

8

Если причина last_label нужно запустить последний в том, что она нуждается в данных от других лейблов, лучшим подходом было бы сказать make о том, что зависимость:

all: last_label 

last_label: label1 label2 label3 label4 

Если не истинная зависимость (то есть, если вы не хотите last_label быть восстановлен, если один из других изменений), и если вы используете GNU Make, вы можете указать их в качестве «зависимости только для заказа» - make будет просто m ake уверены, что они существуют до last_label:

all: last_label 

last_label: | label1 label2 label3 label4 
+0

Он называется [зависимость только от заказа] (http://www.gnu.org/software/make/manual/make.html#index-order_002donly-prerequisites-145), если быть точным. –

+0

Спасибо за исправление. Ред. – laindir

+0

это должно решить базовое требование - следовательно, make, даже если он вилки многих процессов, он должен будет гарантировать, что порядок завершения целей, даже если не параллельный вариант не используется !! , +1 @laindir – nsd

Смежные вопросы