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