Как я могу сказать 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
рецептов.