0
$(BUILDDIR)/%.check: $(SRCDIR)/%.c
        $(eval pragma := $(shell grep "pragma" $< ))
        @echo $<: $(pragma)

$(pragma) 变量始终为空字符串,即使对于包含 #pragma 的文件也是如此

怎么了?

4

1 回答 1

1

有几件事是错误的。

1)您将 Make 语法放入命令中,该命令应采用 shell 语法。

2)您试图在一个命令中设置一个变量并在另一个命令中使用它(这不起作用,因为每个命令都在其自己的子shell中运行)。

3) 你尝试了一个复杂的命令,但没有测试它的简单组件(这会告诉你有问题)。

如果您想要做的只是显示#pragma线条,这将做到:

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

如果您想用线条做一些更复杂的事情,请告诉我们它是什么,我们会看看我们是否可以提供帮助。

于 2012-07-16T12:47:46.563 回答