Makefile: копирование файлов с помощью правила

Я пытаюсь скопировать файлы с помощью мои правила, но мое правило не срабатывает:

BUILDDIR = build
COPY_FILES = code/xml/schema/schema.xsd config.txt

all: $(BUILDDIR) $(COPY_FILES) copy

$(BUILDDIR):
    mkdir -p $@

$(COPY_FILES):
    cp -f $@ $(BUILDDIR)

copy:
    cp -f $(COPY_FILES) $(BUILDDIR)

Я пытаюсь использовать $(COPY_FILES), но он не запускается, хотя $(BUILDDIR) и copy запускаются. Я не уверен, что не так с моим Makefile. Я хотел бы, чтобы правило $(COPY_FILES) работало, если это возможно, пожалуйста (и удалите копию). Кто-нибудь знает?

1 ответов


проблема с $(COPY_FILES) правило состоит в том, что целями этого правила являются два файла, которые уже существуют, а именно code/xml/schema/schema.xsd и config.txt. Make не видит причин для выполнения правила. Я не уверен, почему Make не выполняет copy правило, но я подозреваю, что есть файл под названием copy запутанный вопрос. в любом случае, [копировать] плохое правило.

попробуйте это:

COPY_FILES = $(BUILD_DIR)/schema.xsd $(BUILD_DIR)/config.txt

all: $(COPY_FILES)

$(BUILD_DIR)/schema.xsd: code/xml/schema/schema.xsd
$(BUILD_DIR)/config.txt: config.txt

$(BUILD_DIR)/%:
    cp -f $< $@