2016-12-15 5 views
-1

Я пытаюсь использовать make-файл, чтобы выполнить некоторые тесты для моей другой программы.Ошибка Makefile в последнем файле

DIFF=$(TXT_FILES:$(TESTS_DIR)/%.txt=$(DIFF_DIR)/%.dif), $(STDIN_FILES:$(TESTS_DIR/%.stdin=$(DIFF_DIR)%.dif) 

$(DIFF_DIR)/%.dif: $(TESTS_DIR)/%.txt $(DIFF_DIR)/%.out 
    ./03uzduotis/getfasta $< | diff $(DIFF_DIR)/$*.out - > [email protected] 

$(DIFF_DIR)/%.dif: $(TESTS_DIR)/%.stdin $(DIFF_DIR)/%.out 
    cat $< | ./03uzduotis/getfasta - | diff $(DIFF_DIR)/$*.out - > [email protected] 

Проблема у меня в том, что, когда я запускаю Makefile, она проходит через все тестовые файлы, кроме последнего, ссылаясь на «Там нет правила, чтобы сделать Test1.dif требуемого„испытания“»

Я проверил удаление некоторых тестовых файлов, которые действительно умирают в последнем файле независимо от того, какой файл является последним.

+0

Проверьте количество «f» в «diff». Я подозреваю, что у вас есть опечатка в исходном коде (поскольку опубликованный код читает «.dif», но сообщение об ошибке относится к «.diff»). – DevSolar

+0

Что-то еще f есть только моя клавиатура. –

+0

Когда вы запрашиваете проблему с makefile. Пожалуйста, добавьте всю организацию проекта makefile и файлов. – Stargateur

ответ

0

Похож эта посторонняя запятой здесь:

DIFF=$(TXT_FILES:$(TESTS_DIR)/%.txt=$(DIFF_DIR)/%.dif), $(STDIN_FILES:$(TESTS_DIR/%.stdin=$(DIFF_DIR)%.dif) 

$(DIFF) будет выглядеть ddir/one.dif ddir/two.dif, ddir/stdin1.dif Имя файла среднего там действительно есть запятая как часть имени. Списки в Make разделяются пробелами, а не запятыми.

Я подозреваю, что ваше сообщение об ошибке не является точным, так как из вашего примера все имена файлов должны были иметь префикс $(DIFF_DIR)/, а запятая также является сообщением об ошибке.

У вас также есть недостающий ) и отсутствует / в замене $(TESTS_DIR/%.stdin=$(DIFF_DIR)%.dif. Вероятно, часть этого вопроса опечатка в вашем вопросе, поскольку несбалансированные скобки вызвали бы ошибку синтаксического анализа.