首页 > 后端开发 > Golang > 为什么使用顶级 Cmd 文件夹的默认建议不适用于构建多个二进制文件?

为什么使用顶级 Cmd 文件夹的默认建议不适用于构建多个二进制文件?

Barbara Streisand
发布: 2024-11-03 09:00:30
原创
394 人浏览过

Why Doesn't the Default Advice of Using a Top-Level Cmd Folder Work for Building Multiple Binaries?

在单个命令中构建多个包二进制文件

为了一次性构建多个包二进制文件,您需要创建一个脚本来迭代每个包并在每个包上运行 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板