首页 >后端开发 >Golang >如何在没有顶级'cmd”文件夹的情况下同时构建多个 Go 包二进制文件?

如何在没有顶级'cmd”文件夹的情况下同时构建多个 Go 包二进制文件?

DDD
DDD原创
2024-11-02 22:49:29721浏览

How to Build Multiple Go Package Binaries Simultaneously Without a Top-Level `cmd` Folder?

同时构建多个 Go 包二进制文件

问题围绕同时构建多个包二进制文件,作为使用顶级的默认建议cmd 文件夹似乎不起作用。提供的代码示例显示了一种特定的文件夹结构,可以正确构建特定的二进制文件。

要使用 go build 命令一步构建所有二进制文件,建议使用以下变体:

cd $GOPATH/someProject
for CMD in `ls src/cmd`; do
  go build ./src/cmd/"$CMD"
done

此命令迭代 src/cmd 目录中的包并单独构建每个包。生成的二进制文件将存储在各自的包目录中。

或者,如果您不希望将二进制文件安装到 $GOPATH/bin 中,可以使用脚本。这是开源项目中的常见做法,其中构建脚本处理多个二进制生成。

可以使用以下示例脚本:

cd $GOPATH/someProject
for CMD in `ls cmd`; do
  go build ./cmd/$CMD
done

此脚本迭代 cmd 中的包目录并在每个目录上运行 go build。结果是一组存储在各自 cmd 包目录中的二进制文件。

为了进一步参考,以下热门项目提供了构建脚本的示例:

  • Grafana:https:// github.com/grafana/grafana/blob/master/build.go
  • 圆环:https://github.com/coreos/torus/blob/master/Makefile
  • 球童:https: //github.com/mholt/caddy/blob/master/dist/automate.go

以上是如何在没有顶级'cmd”文件夹的情况下同时构建多个 Go 包二进制文件?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn