Я начинаю с этого (make) и имею некоторые проблемы с попыткой grep для текста в файле (как часть make процесс в Windows). Большая проблема, которую я пытаюсь решить, - проверить, удовлетворены ли все исполняемые файлы двоичных файлов в заданном каталоге. Я использую depend.exe (Dependency Walker) для более поздней части, выходной файл которого я пытаюсь grep, и, возможно, прервать процесс сборки, если проверка достоверности не выполняется.make error (Windows): строка 1: синтаксическая ошибка около неожиданного токена `, '
binary-dependency-validate:
for BINARYEXEC in $(shell $(PATH_TO_FIND_EXE) $(PRE_DEFINED_DIR) -name "*.exe"); do \
$(PATH_TO_DEPENDS_EXE) /c /pb /ot $(PRE_DEFINED_DIR)/$$BINARYEXEC-depends.txt $(PRE_DEFINED_DIR)/$$BINARYEXEC ; \
ifeq ($(shell $(PATH_TO_GREP_EXE) "Error: At least one required implicit or forwarded dependency was not found." $(PRE_DEFINED_DIR)/$$BINARYEXEC-depends.txt),); \
@echo "Dependency ok" ; \
endif ; \
done
Я сталкиваюсь следующее сообщение об ошибке:
line 1: syntax error near unexpected token `,'
Любые предложения будут очень помочь. Я смотрел на this пост и попытался совместив ifeq без отступа, а также (что не помогло.)
Спасибо, Бета (за подробное объяснение тоже). У меня была эта проблема исправлена, когда вместо этого я использовал shell.Но у меня есть еще одна проблема. Когда я запускаю make, команда grep начинается всегда перед мишенью, и, следовательно, $$ BINARYEXEC пуст, когда запускается grep. Несмотря на то, что цикл for выполняет итерацию через fine, grep никогда не пересчитывается на итерацию. И полученная ошибка: «grep: /-depends.txt: нет такого файла или каталога». Мне, должно быть, не хватает какой-то тонкой вещи о том, как делать эти команды. Любые указатели были бы замечательными. –
Чистым экспериментированием я вижу, что все, что помечено для запуска в оболочке, обрабатывается (и выполняется) перед остальными командами. Следовательно, я изменил $ (shell $ (PATH_TO_GREP) ...) на просто $ (PATH_TO_GREP) ...., вытащил все из условия if, и теперь моя условная оболочка оболочки выглядит следующим образом: if [[$$ ? -eq 0]]. И это сработало для меня. Благодарю. –
@ durden83, снова вы помещали Make-код ('$ (shell ...)') внутри команды. – Beta