makefile - Makefile:当我使用'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
在完全编译之前先运行。
解决方案
如何部分控制订单?
您可以通过指定目标之间的依赖关系来控制顺序。在构建其先决条件之前,不会构建目标。
run
应该取决于test
:
run: test
./test
.PHONY: run
由于run
不是文件或目录,因此应将其标记为.PHONY
目标。
我通常有:
run_% : %
./$<
.PHONY: run_%
这样您就可以使用make run_this
andmake run_that
它首先构建this
and that
.
推荐阅读
- markdown - 如何使用 Markdown 在表格的左上角单元格中绘制对角线?
- selenium-webdriver - 我无法编写 x 路径
- python - 如何用体素填充 3D 图形?
- asp.net - 美国 Zip+4 验证
- apache-spark - 如何在 spark.sql 中通过 (+) 使用外连接?
- javascript - Pipedream 上的 Outlook Node.js sendMail API 请求消息为空错误
- r - Is there a selective replace function? Should it be done using a If statement or For loop?
- php - 将多个 CodeIgniter 结果集合并到一个数组中
- python - Numpy 中的意外性能乘以 1
- .htaccess - htaccess 重写规则以包含变量