在单个命令中构建多个包二进制文件
为了一次性构建多个包二进制文件,您需要创建一个脚本来迭代每个包并在每个包上运行 go build 命令,如下所示:
<code class="bash">cd $GOPATH/someProject for CMD in `ls cmd`; do go build ./cmd/$CMD done</code>
此脚本将产生以下结果:
[root@node1 test]# ls $GOPATH/someProject bin1 bin2 cmd
为什么使用默认值使用顶级 Cmd 文件夹的建议不起作用
使用顶级 cmd 文件夹构建多个二进制文件的默认建议不起作用,因为 go build 命令无法识别 cmd文件夹作为一个包。相反,它将 cmd 文件夹视为当前工作目录的子目录,并且仅构建该目录中包含的包。这会导致仅构建一个二进制文件。
替代解决方案:使用 Make 文件或构建脚本
如果您不想将二进制文件安装到 $GOPATH/ bin,您可以创建 make 文件或构建脚本来管理构建过程。大多数开源项目都使用这种方法来生成多个二进制文件。例如:
制作文件:
# Makefile for building multiple binaries all: bin1 bin2 bin1: go build ./cmd/bin1 bin2: go build ./cmd/bin2
构建脚本:
<code class="bash">#!/bin/bash # Iterate over the packages in cmd and run go build on each for CMD in `ls cmd`; do go build ./cmd/$CMD done</code>
以上是为什么使用顶级 Cmd 文件夹的默认建议不适用于构建多个二进制文件?的详细内容。更多信息请关注PHP中文网其他相关文章!