如何并行构建包以减少make命令所花费的时间(Golang)
我现在的目录是"thor“
在我的Makefile中
build:
go build -o thor
go build thor/package1
go build thor/scripts/package2在上述情况下,所有包都是独立运行的进程。当我运行make命令时,每个包都会逐个构建。因此,如果每个包构建需要30秒,那么总共需要90秒(30秒* 3)。但是如果我能并行地构建这些包,只需要30秒。
对于shell脚本,这种情况可以通过使用&在后台运行每个脚本来处理,然后使用等待等待到每个脚本的末尾。
示例代码
#!/bin/bash
echo "Starts"
./s1.sh &
./s2.sh &
./s3.sh &
wait
echo "ends"在上述情况下,所有脚本s1.sh、s2.sh、s3.sh将同时运行并等待所有进程完成。
那么,我们可以在Makefile中这样做吗?)
发布于 2017-08-04 09:18:54
而不是
build:
go build -o thor
go build thor/package1
go build thor/scripts/package2把这个分成三个不同的菜谱,如下所示
build: build1 build2 build3
build1:
go build -o thor
build2:
go build thor/package1
build3:
go build thor/scripts/package2
.PHONY: build build1 build2 build3然后使用make选项调用-j,您就完成了。
最好有与命令实际创建的文件相对应的目标,以及一个先决条件列表。然后您不需要.PHONY ,而 make可以决定是否确实需要重建。
发布于 2019-05-25 07:10:35
您可以使用戈克斯将多个平台的构建并行化。
默认情况下,Gox将根据您拥有的CPU数量并行化,并在默认情况下为每个平台构建
与go build完全相同,使用
gox 如果您想要构建包和子包:
gox ./...https://stackoverflow.com/questions/45501238
复制相似问题