1

假设我在第 4 行有以下带有故意错误的 Makefile:

定义模板
全部:

此行包含一些错误
endef

$(eval $(调用模板))

当我运行我得到这个:

$ make-3.81
Makefile:7: *** 缺少分隔符。停止。
$

Make 告诉我第 7 行有一个错误,这在技术上是正确的,因为 TEMPLATE 变量在第 7 行进行了扩展。但这并不是非常有用。为了快速调试这类事情,如果能以某种方式直接将我指向第 4 行的错误会更方便。有没有办法做到这一点?

如果有任何区别,这是 GNU make-3.81。

4

1 回答 1

1

Electric Make 是一种与 GNU make 兼容的高性能 make 实现,可以按照您想要的方式报告错误:

$ cat Makefile 
define BOGUS
foo: bar
    abcd

endef

$(eval $(BOGUS))
$ gmake
Makefile:7: *** missing separator.  Stop.
$ emake
Makefile:7:eval:2: *** missing separator.  Stop.

这是一个商业产品,但您可以从 Electric Cloud 下载免费版本

免责声明:我是 Electric Make 的架构师

于 2013-11-12T06:58:37.820 回答