$(BUILDDIR)/%.check: $(SRCDIR)/%.c
$(eval pragma := $(shell grep "pragma" $< ))
@echo $<: $(pragma)
$(pragma)変数は、#pragmaを含むファイルの場合でも、常にnull文字列です。
どうしたの?
いくつか間違っていることがあります。
1)Make構文をコマンドに入れています。これはシェル構文に含まれている必要があります。
2)あるコマンドで変数を設定し、それを別のコマンドで使用しようとしています(各コマンドは独自のサブシェルで実行されるため、機能しません)。
3)単純なコンポーネントをテストせずに複雑なコマンドを試行しました(何かが間違っていることがわかります)。
#pragma
行を表示するだけの場合は、次のようにします。
$(BUILDDIR)/%.check: $(SRCDIR)/%.c
@echo $<: `grep "pragma" $<`
線でもっと複雑なことをしたい場合は、それが何であるかを教えてください。私たちが助けることができるかどうかを確認します。