Как заставить gnu make не собирать рецепт параллельно?

Как я могу сказать gnu make не собирать некоторые рецепты параллельно. Допустим, у меня есть следующий makefile :

sources = a.xxx b.xxx c.xxx
target  = program

all : $(target)

$(target) : $(patsubst %.xxx,%.o,$(sources))
    $(CXX) -o $@ $<

%.o : %.cpp
    $(CXX) -c -o $@ $<

%.cpp : %.xxx
    my-pre-processor -o $@ $<

Однако, команда my-pre-processor создает временные файлы с фиксированным именем (я не могу его изменить). Это работает нормально, если я просто использую make без параметра -j. Однако, если используется параметр -j, сборка иногда не удается, потому что два одновременных вызова my-pre-processor перезаписывают свои временные файлы.

Я хотел бы знать, есть ли способ сказать make, что он не должен собирать попытку распараллелить выполнение %.cpp : %.xxx рецептов.

12
задан Sylvain Defresne 3 December 2010 в 14:18
поделиться