ホームページ > バックエンド開発 > Golang > 最上位の Cmd フォルダーを使用するというデフォルトのアドバイスが複数のバイナリのビルドに機能しないのはなぜですか?

最上位の Cmd フォルダーを使用するというデフォルトのアドバイスが複数のバイナリのビルドに機能しないのはなぜですか?

Barbara Streisand
リリース: 2024-11-03 09:00:30
オリジナル
380 人が閲覧しました

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 フォルダーを現在の作業ディレクトリのサブディレクトリとして扱い、そのディレクトリ内に含まれるパッケージのみをビルドします。これにより、バイナリが 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート