Согласно документации gnu make , если правило генерирует несколько целей за один вызов (например, с помощью рецепта, выполняющего инструмент с несколькими выходными файлами), вы можете использовать правило '&:' синтаксис, чтобы сказать сделать. При использовании этого синтаксиса я получаю предупреждения о цели '&', однако при наличии нескольких (но уникальных) целей в нескольких правилах. Как будто ошибаетесь в амперсанде для имени цели вместо того, чтобы быть частью разделителя цели-пререквизита.
В моем первоначальном проекте у меня есть два правила с несколькими целями и рецепт, генерирующий эти цели из одно утверждение / инструмент . Цели уникальны для каждого из двух правил. Я создал следующий простой пример, чтобы продемонстрировать предупреждение, сгенерированное make:
all: file_abbc
.PHONY: all clean
clean:
del /Q file_*
file_abbc: file_ab file_bc
copy file_ab+file_bc file_abbc
file_ab file_bc &: file_a file_b file_c
copy file_a+file_b file_ab
copy file_b+file_c file_bc
file_a file_b file_c &: content
copy content file_a
copy content file_b
copy content file_c
Предупреждения от запуска make на Windows на приведенном выше:
Makefile: 17: предупреждение: переопределение рецепта для цели '&'
Makefile: 13: предупреждение: игнорирование старого рецепта для цели '&'
Почему make жалуется на цель '&'?