github.com/shogo82148/std@v1.22.1-0.20240327122250-4e474527810c/go/build/doc.go (about)

     1  // Copyright 2011 The Go Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  // パッケージ build はGoのパッケージに関する情報を収集します。
     6  //
     7  // # Go Path
     8  //
     9  // Goパスは、Goのソースコードが含まれているディレクトリツリーのリストです。
    10  // これは、標準のGoツリーで見つからないインポートを解決するために参照されます。
    11  // デフォルトのパスは、GOPATH環境変数の値であり、オペレーティングシステムに適したパスリストとして解釈されます
    12  // (Unixでは変数はコロンで区切られた文字列であり、
    13  // Windowsではセミコロンで区切られた文字列、
    14  // Plan 9ではリストです)。
    15  //
    16  // Goパスにリストされている各ディレクトリには、指定された構造が必要です:
    17  //
    18  // src/ディレクトリにはソースコードが格納されます。'src'以下のパスがインポートパスまたは実行可能ファイル名を決定します。
    19  //
    20  // pkg/ディレクトリにはインストールされたパッケージオブジェクトが格納されます。
    21  // Goツリーと同様に、各ターゲットオペレーティングシステムと
    22  // アーキテクチャのペアに対して、pkgのサブディレクトリがあります
    23  // (pkg/GOOS_GOARCH)。
    24  //
    25  // DIRがGoパスにリストされているディレクトリである場合、DIR/src/foo/barにソースがあるパッケージは「foo/bar」としてインポートされ、
    26  // 「DIR/pkg/GOOS_GOARCH/foo/bar.a」(またはgccgoの場合は「DIR/pkg/gccgo/foo/libbar.a」)にコンパイルされた形式でインストールされます。
    27  //
    28  // bin/ディレクトリにはコンパイルされたコマンドが格納されます。
    29  // 各コマンドは、ソースディレクトリを使用して命名されますが、
    30  // パス全体ではなく最終要素のみを使用します。つまり、
    31  // DIR/src/foo/quuxのソースであるコマンドはDIR/bin/quuxにインストールされます。DIR/bin/foo/quuxではなく、foo/が取り除かれます。
    32  // そのため、PATHにDIR/binを追加することで、インストールされたコマンドにアクセスできます。
    33  //
    34  // 以下にディレクトリレイアウトの例を示します:
    35  //
    36  // GOPATH=/home/user/gocode
    37  //
    38  // /home/user/gocode/
    39  //
    40  //	src/
    41  //	    foo/
    42  //	        bar/               (パッケージ bar の Goコード)
    43  //	            x.go
    44  //	        quux/              (メインパッケージの Goコード)
    45  //	            y.go
    46  //	bin/
    47  //	    quux                   (インストールされたコマンド)
    48  //	pkg/
    49  //	    linux_amd64/
    50  //	        foo/
    51  //	            bar.a          (インストールされたパッケージオブジェクト)
    52  //
    53  // # ビルド制約
    54  //
    55  // ビルド制約、またはビルドタグとも呼ばれるものは、
    56  // パッケージに含めるべきファイルの条件です。ビルド制約は、次の行コメントによって与えられます。
    57  //
    58  //	//go:build
    59  //
    60  // ビルド制約は、ファイル名の一部にもなることがあります
    61  // (例えば、source_windows.go は、対象の
    62  // オペレーティングシステムがwindowsの場合のみ含まれます)。
    63  //
    64  // 詳細は 'go help buildconstraint'
    65  // (https://golang.org/cmd/go/#hdr-Build_constraints) を参照してください。
    66  //
    67  // # バイナリのみのパッケージ
    68  //
    69  // Go 1.12 およびそれ以前では、
    70  // パッケージをソースコードなしでバイナリ形式で配布することが可能でした。
    71  // パッケージには、ビルド制約で除外されないソースファイルと
    72  // 「//go:binary-only-package」というコメントが含まれていました。ビルド制約と同様に、このコメントはファイルの先頭に配置され、空行と他の行コメントだけが前にあること、コメントの後には空行があることで、パッケージのドキュメンテーションと区別されます。
    73  // ビルド制約とは異なり、このコメントは非テストのGoソースファイルでのみ認識されます。
    74  //
    75  // バイナリのみのパッケージの最小のソースコードは以下のようになります:
    76  //
    77  //	//go:binary-only-package
    78  //
    79  //	package mypkg
    80  //
    81  // ソースコードには追加のGoコードが含まれる可能性があります。このコードはコンパイルされないが、godocなどのツールによって処理され、エンドユーザのドキュメンテーションとして役立つかもしれません。
    82  //
    83  // "go build" およびその他のコマンドはバイナリオンリーパッケージをサポートしていません。
    84  // [Import] と [ImportDir] は、これらのコメントを含むパッケージのBinaryOnlyフラグを設定し、ツールやエラーメッセージで利用することができます。
    85  package build