运行 两个并行制作假目标

Run two make phony targets in parallel

我(误)使用 make 的虚假目标来方便地在我的项目中做各种随机的事情。例如:

.PHONY: css
css:
    @(sass foo.scss foo.css)

但有时这些命令会 运行 永远,直到我明确地杀死它们。例如,当 sass 正在监视文件的更改时:

.PHONY: watch_css
watch_css:
    @(sass --watch foo.scss:foo.css)

这很好,但有时我想在一个目标中组合多个配方:

.PHONY: watch_css1
watch_css1:
    @(sass --watch foo1.scss:foo1.css)

.PHONY: watch_css2
watch_css2:
    @(sass --watch foo2.scss:foo2.css)

.PHONY: watch
watch: watch_css1 watch_css2

如何让 make watch 到 运行 同时 watch_css1watch_css2 并行?如果我明确地做 make -j2 watch 一切正常,但有没有办法将其嵌入到 makefile 本身?

您可以运行递归地进行:

watch:
        $(MAKE) -j2 watch_css1 watch_css2