编写 makefile 时如何在退出时终止子进程?

When writing a makefile how can I kill a subprocess on exit?

生成文件:

default:
    command1 &
    command2 &

当我 运行 make 并按下 Control-C 时,command1command2 继续 运行宁。我怎样才能让 command1command2 在 make 被杀死后被杀死? command1command2 应该 运行 并行。 Command1 监视源文件并编译它们。 Command2 是一个网络服务器。

您可以将 make 自己的并行选项 make -j2 与这样的 makefile 一起使用:

default: task1 task2

task1:
        command1

task2:
        command2

make 将负责中断 command1 和 command2。

以下代码有效,我不知道为什么。我从 https://veithen.github.io/2014/11/16/sigterm-propagation.html

拿来的

Makefile:

.PHONY: default
default:
    bash build.sh

build.sh:

#!/bin/bash
trap 'kill -TERM $PID' TERM INT

webpack & # Command 1
http-server -p 8000 -c-1 & # Command 2

PID=$!
wait $PID
trap - TERM INT
wait $PID
EXIT_STATUS=$?