У вас никогда не должно быть цели с каталогом в качестве предварительного условия, поскольку временные метки каталога обновляются в необычное время. Я не должен говорить «никогда»;это может быть очень полезно, но это означает нечто совершенно иное, чем вы думаете.
Вы можете попробовать использовать для этого обязательное условие только для заказа:
$(BUILDDIR):
@mkdir -p $(BUILDDIR)/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS,TEMP}
$(SOURCE0): $(SPEC) | $(BUILDDIR)
spectool -g -C $(BUILDDIR)/SOURCES $(SPEC)
Или вы можете просто поставить mkdir. внутри рецепта:
$(SOURCE0): $(SPEC)
@mkdir -p $(BUILDDIR)/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS,TEMP}
spectool -g -C $(BUILDDIR)/SOURCES $(SPEC)
Обратите внимание, что здесь вы используете проблемы, связанные с bash ({}
). Если вы хотите быть переносимым, вам нужно добавить:
SHELL := /bin/bash
в ваш make-файл.