在makefile中强制执行

Force execution in makefile

我实际上正在尝试修改一个 Makefile 并且我想在此 makefile 的末尾添加一个命令,该命令将是 运行 即使 make 的其余部分失败,我还想知道是否可以 运行 这个命令,即使用户点击 ctrl + c。 我在网上搜索了一下,但找不到问题的答案。

在此先感谢您。

如果你想在每次调用 make 时都运行一个命令,你可以调用 shell 函数:

DUMMY := $(shell myCommand &)

将它放在 Makefile 的开头,这样它就是 make 要做的第一件事。通常用 CTRL-C 停止 make,除非你超快并在 make 执行命令之前点击 CTRL-C,不应该停止子进程。

基本上不可能在 makefile 中定义总是 运行 作为最后的东西。

我能建议的最好的办法是创建一个包装脚本供人们调用而不是 make,并且包装脚本 运行 是您在 make 退出后所需的命令。该脚本甚至可以捕获 SIGINT (^C)。

如果你真的必须用 make 来做,唯一的方法是创建一个“包装 makefile”,它基本上调用真正的 makefile 上的子 make 来完成工作,然后可以做更多的事情当那个子- 完成。在这种情况下无法捕获 SIGINT。这也很复杂,因为在 makefile 中实际上并没有“完美转发”这样的东西,所以让 makefile 包装器的行为与没有包装器时的行为相同是棘手的,甚至是不可能的。