単一のコマンドで複数のパッケージ バイナリをビルドする
複数のパッケージ バイナリを一度にビルドするには、次のスクリプトを作成する必要があります。以下に示すように、各パッケージを反復処理し、それぞれで 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 フォルダーを現在の作業ディレクトリのサブディレクトリとして扱い、そのディレクトリ内に含まれるパッケージのみをビルドします。これにより、バイナリが 1 つだけビルドされます。
代替解決策: Make File または Build Script を使用する
バイナリを $GOPATH/ にインストールしたくない場合bin を使用すると、ビルド プロセスを管理するためのメイク ファイルまたはビルド スクリプトを作成できます。ほとんどのオープンソース プロジェクトは、このアプローチを使用して複数のバイナリを作成します。例:
ファイルの作成:
# 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 中国語 Web サイトの他の関連記事を参照してください。