$(BUILDDIR)/%.check: $(SRCDIR)/%.c
$(eval pragma := $(shell grep "pragma" $< ))
@echo $<: $(pragma)
$(pragma) 变量始终为空字符串,即使对于包含 #pragma 的文件也是如此
怎么了?
有几件事是错误的。
1)您将 Make 语法放入命令中,该命令应采用 shell 语法。
2)您试图在一个命令中设置一个变量并在另一个命令中使用它(这不起作用,因为每个命令都在其自己的子shell中运行)。
3) 你尝试了一个复杂的命令,但没有测试它的简单组件(这会告诉你有问题)。
如果您想要做的只是显示#pragma
线条,这将做到:
$(BUILDDIR)/%.check: $(SRCDIR)/%.c
@echo $<: `grep "pragma" $<`
如果您想用线条做一些更复杂的事情,请告诉我们它是什么,我们会看看我们是否可以提供帮助。