ホームページ >バックエンド開発 >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 コマンドを使用してすべてのバイナリを 1 ステップでビルドするには、次のバリエーションをお勧めします:

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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。