2012-07-16 2 views
0
$(BUILDDIR)/%.check: $(SRCDIR)/%.c 
     $(eval pragma := $(shell grep "pragma" $<)) 
     @echo $<: $(pragma) 

$ (Прагма) переменная всегда пустая строка, даже для файлов, содержащих #pragmaMakefile оболочки Grep

Что случилось?

ответ

1

Есть несколько вещей, которые неправильно.

1) Вы помещаете синтаксис синтаксиса в команду, которая должна быть в синтаксисе оболочки.

2) Вы пытаетесь установить переменную в одной команде и использовать ее в другой (что не будет работать, потому что каждая команда выполняется в своей собственной подоболочке).

3) Вы пытались выполнить сложную команду, не тестируя ее более простые компоненты (которые сказали бы вам, что что-то не так).

Если все, что вы хотите сделать, это отобразить #pragma линии, это будет сделать это:

$(BUILDDIR)/%.check: $(SRCDIR)/%.c 
    @echo $<: `grep "pragma" $<` 

Если вы хотите сделать что-то более сложным, с линиями, говорят нам, что это такое, и мы увидим, если мы можем помочь.

+0

Мне нужно остановиться с сообщением об ошибке в файлах, содержащих #pragma – user1528805

+1

Затем как насчет 'if grep -q pragma $ <; затем эхо «нашел прагма!»; ложный; else:; fi' –

+0

@NormanGray, ты избил меня. – Beta

Смежные вопросы