「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > 最上位の `cmd` フォルダーを使用せずに複数の Go パッケージ バイナリを同時にビルドするにはどうすればよいですか?

最上位の `cmd` フォルダーを使用せずに複数の Go パッケージ バイナリを同時にビルドするにはどうすればよいですか?

2024 年 11 月 11 日に公開
ブラウズ:319

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
  • Caddy: https: //github.com/mholt/caddy/blob/master/dist/automate.go
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3