Makefile:How使用'make -j'可以控制部分编译顺序吗?

Makefile:How can I control the partial compilation order when I use 'make -j'?

我写了一个makefile,由于某些原因,我想让它在编译后执行程序。
但是当我只使用命令'make'时它太慢了。所以我添加参数'-j'来加速。
我只是想让它先编译所有文件然后 运行 自动编译程序,但它 运行 在编译之前先编译程序。
如何部分控制顺序?

生成文件

all:test run
test:test1.o test2.o test3.o
    gcc test1.o test2.o test3.o -o test
test1:test1.c
    gcc -c test1.c
test2:test2.c
    gcc -c test2.c
test3:test3.c
    gcc -c test3.c
run:
    ./test

它可能 运行 ./test 在完全编译之前。

How can I control the order partly?

您可以通过指定目标之间的依赖关系来控制顺序。在构建先决条件之前不会构建目标。

run 应该依赖于 test:

run: test
    ./test

.PHONY: run

因为run不是文件或目录,所以应该标记为.PHONY目标。

我通常有:

run_% : %
    ./$<
.PHONY: run_%

以便您可以使用 make run_thismake run_that,它首先构建 thisthat