使用entr运行时无法完成

时间:2015-04-22 18:58:59

标签: makefile

我在使用以下命令更改C文件时尝试使用entr重新编译:

$ echo ex8.c | entr make ex8 && ./ex8

当我运行它时,我得到cc输出,但没有任何事情发生

$ echo ex8.c | entr make ex8 && ./ex8
cc -Wall -g    ex8.c   -o ex8

如果我只是手动编写它就可以了。

$ make ex8 && ./ex8

我应该如何用它来写它才能工作?

1 个答案:

答案 0 :(得分:0)

该手册页不够详细,但我安装并尝试了。请注意,您的命令实际上是三个不同的shell命令:echo ex8.centr make ex8./ex8。它们通过管道(前两个)和&&运算符(最后两个)连接。管道中的两个命令都是并行启动的。在管道完成之前不会调用最终命令,如果退出代码成功则运行它。

这意味着在./ex8命令完成之后才会启动最终命令entr make ex8。但是,entr在运行一次之后不会退出:它的全部内容是继续观察源文件并在每次更改时运行make。这就是永远不会调用最终命令的原因:entr永不退出。

有多种方法可以解决这个问题,但最简单的方法是在makefile中添加一条规则来构建 AND RUN 命令,然后用make调用它;将其添加到您的makefile:

.PHONY: run-ex8
run-ex8: ex8
        ./$<

现在像这样使用entr

echo ex8.c | entr make run-ex8