$(BUILDDIR)/%.check: $(SRCDIR)/%.c
$(eval pragma := $(shell grep "pragma" $<))
@echo $<: $(pragma)
$ (Прагма) переменная всегда пустая строка, даже для файлов, содержащих #pragmaMakefile оболочки Grep
Что случилось?
$(BUILDDIR)/%.check: $(SRCDIR)/%.c
$(eval pragma := $(shell grep "pragma" $<))
@echo $<: $(pragma)
$ (Прагма) переменная всегда пустая строка, даже для файлов, содержащих #pragmaMakefile оболочки Grep
Что случилось?
Есть несколько вещей, которые неправильно.
1) Вы помещаете синтаксис синтаксиса в команду, которая должна быть в синтаксисе оболочки.
2) Вы пытаетесь установить переменную в одной команде и использовать ее в другой (что не будет работать, потому что каждая команда выполняется в своей собственной подоболочке).
3) Вы пытались выполнить сложную команду, не тестируя ее более простые компоненты (которые сказали бы вам, что что-то не так).
Если все, что вы хотите сделать, это отобразить #pragma
линии, это будет сделать это:
$(BUILDDIR)/%.check: $(SRCDIR)/%.c
@echo $<: `grep "pragma" $<`
Если вы хотите сделать что-то более сложным, с линиями, говорят нам, что это такое, и мы увидим, если мы можем помочь.
Мне нужно остановиться с сообщением об ошибке в файлах, содержащих #pragma – user1528805
Затем как насчет 'if grep -q pragma $ <; затем эхо «нашел прагма!»; ложный; else:; fi' –
@NormanGray, ты избил меня. – Beta