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

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

Barbara Streisand
Barbara Streisandオリジナル
2024-11-03 09:00:30336ブラウズ

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

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