假设我在第4行有一个故意错误的Makefile:
define TEMPLATE all: this line contains some errors endef $(eval $(call TEMPLATE))
当我运行make时,我明白了:
$ make-3.81 Makefile:7: *** missing separator. Stop. $
Make告诉我第7行有一个错误,这在技术上是正确的,因为TEMPLATE变量在第7行展开。但这并不是非常有用。为了快速调试这种事情,如果make可以某种方式直接指向第4行的错误,那将会更方便。有没有办法做到这一点?
如果它有任何区别,这是GNU make-3.81。
答案 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
的架构师