如何在多行变量定义的eval中找到错误行

时间:2013-11-11 21:43:44

标签: debugging makefile eval gnu-make

假设我在第4行有一个故意错误的Makefile:

define TEMPLATE
all:

this line contains some errors
endef

$(eval $(call TEMPLATE))

当我运行时,我明白了:

$ make-3.81
Makefile:7: *** missing separator.  Stop.
$

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

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

1 个答案:

答案 0 :(得分:0)

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.

这是商业产品,但你可以download a free version from Electric Cloud

免责声明:我是Electric Make

的架构师