Как вы думаете, что делает правило / %/
(кроме как запутать вас и make
- и меня)?Чего вы пытаетесь достичь с помощью бита %/
?
У вас может быть две (или более) цели слева от двоеточия, но обе они должны быть на процент меньше.
prog1 prog2: something
$(CC) -o $@ $@.o ${LIBRARIES}
Метасимвол %
нельзя использовать с правилом без %
, но make
интерпретирует:
/ %/:
аналогично примеру prog1 prog2
, но одинодна из целей имеет %
, а другая - нет, и вам нельзя смешивать их.Правило /
является явным правилом;Похоже, что это инструкции по обновлению корневого каталога вашей системы.%/
является неявным правилом;возможно, что-то связано с обновлением каталогов.
Копирование некоторых материалов из комментариев:
DIRECTORY_BUILD_RULES = \
$(cmd_crmodverdir); \
$(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) $(build)=$(build-dir)
/: prepare scripts FORCE; $(DIRECTORY_BUILD_RULES)
%/: prepare scripts FORCE; $(DIRECTORY_BUILD_RULES)
Эта запись должна работать (именно поэтому я использовал еев комментарии), но я бы написал в makefile
:
DIRECTORY_DEPENDENCIES = prepare scripts FORCE
DIRECTORY_BUILD_RULES = \
$(cmd_crmodverdir); \
$(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) $(build)=$(build-dir)
/: $(DIRECTORY_DEPENDENCIES)
$(DIRECTORY_BUILD_RULES)
%/: $(DIRECTORY_DEPENDENCIES)
$(DIRECTORY_BUILD_RULES)
Если это все еще вызывает проблемы, просмотрите, что делает первое (/:
) правило.Вы уверены, что это нужно?