使用 entr 运行 时 Make 未完成
Make doesn't finish when run with entr
我正在尝试使用 entr 在我使用以下命令更改 C 文件后立即重新编译:
$ 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
我应该如何用 entr 编写它才能工作?
手册页不够详细,但我安装并尝试了它。请注意,您的命令实际上是三个不同的 shell 命令:echo ex8.c
、entr make ex8
和 ./ex8
。它们通过管道(前两个)和 &&
运算符(最后两个)连接。管道中的两个命令都是并行启动的。在管道完成之前不会调用最终命令,然后如果退出代码成功,则为 运行.
这意味着最终命令 ./ex8
将在 entr make ex8
命令完成后才会启动。但是,entr
在它 运行s make 一次后不会退出:它的全部目的是继续观察源文件和 运行 make 每次更改。这就是为什么永远不会调用最终命令的原因:entr
永远不会退出。
有多种方法可以解决这个问题,但最简单的方法是在您的 makefile 中添加一条规则,该规则将构建 AND 运行 命令,然后使用制作;将此添加到您的 makefile 中:
.PHONY: run-ex8
run-ex8: ex8
./$<
现在像这样使用 entr
:
echo ex8.c | entr make run-ex8
我正在尝试使用 entr 在我使用以下命令更改 C 文件后立即重新编译:
$ 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
我应该如何用 entr 编写它才能工作?
手册页不够详细,但我安装并尝试了它。请注意,您的命令实际上是三个不同的 shell 命令:echo ex8.c
、entr make ex8
和 ./ex8
。它们通过管道(前两个)和 &&
运算符(最后两个)连接。管道中的两个命令都是并行启动的。在管道完成之前不会调用最终命令,然后如果退出代码成功,则为 运行.
这意味着最终命令 ./ex8
将在 entr make ex8
命令完成后才会启动。但是,entr
在它 运行s make 一次后不会退出:它的全部目的是继续观察源文件和 运行 make 每次更改。这就是为什么永远不会调用最终命令的原因:entr
永远不会退出。
有多种方法可以解决这个问题,但最简单的方法是在您的 makefile 中添加一条规则,该规则将构建 AND 运行 命令,然后使用制作;将此添加到您的 makefile 中:
.PHONY: run-ex8
run-ex8: ex8
./$<
现在像这样使用 entr
:
echo ex8.c | entr make run-ex8