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_this
和 make run_that
,它首先构建 this
和 that
。
我写了一个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_this
和 make run_that
,它首先构建 this
和 that
。