diff --git a/src/pkg/go/build/doc.go b/src/pkg/go/build/doc.go new file mode 100644 index 0000000..9a30e48 --- /dev/null +++ b/src/pkg/go/build/doc.go @@ -0,0 +1,135 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// buildパッケージはGoのパッケージの情報を収集します。 +// +// Go Path +// +// GoのパスはGoのソースコードが入ったディレクトリツリーのリストです。 +// 標準のGoのツリー内に見つからなかったインポートはここから探されます。 +// デフォルトのパスはGOPATH環境変数の値で、 +// OSに応じたパスのリストとして解釈されます(Unixならばコロン区切りの文字列、 +// Windowsならばセミコロン区切りの文字列、Plan 9ならばリスト)。 +// +// Goのパスにあるそれぞれのディレクトリはあらかじめ決められた構造を持ちます: +// +// src/ディレクトリにはソースコードが入ります。 +// 'src'以下のパスがインポートするパスや実行ファイルの名前になります。 +// +// pkg/ディレクトリにはインストールされたパッケージオブジェクトが入ります。 +// Goのツリーでは、ターゲットとするOSとアーキテクチャのペアごとにサブディレクトリ +// (pkg/GOOS_GOARCH)が作られます。 +// +// DIRがGoのパスにあるディレクトリとすると、 +// DIR/src/foo/barは"foo/bar"としてインポートされ、 +// "DIR/pkg/GOOS_GOARCH/foo/bar.a"としてコンパイルされます。 +// (gccgoの場合は"DIR/pkg/gccgo/foo/libbar.a") +// +// bin/ディレクトリにはコンパイル済みのコマンドが入ります。 +// 各コマンドはソースディレクトリに基づいて名前が付けられますが、 +// パス全体ではなく、最後の要素だけが使われます。 +// つまり、DIR/src/foo/quuxはDIR/bin/quuxになるのであって、 +// DIR/bin/foo/quuxにはなりません。 +// DIR/binをPATHに加えればインストールされたコマンドを使えるようにするために、 +// fooは取り除かれます。 +// +// 以下はディレクトリレイアウトの例です: +// +// GOPATH=/home/user/gocode +// +// /home/user/gocode/ +// src/ +// foo/ +// bar/ (barパッケージのgoコード) +// x.go +// quux/ (mainパッケージのgoコード) +// y.go +// bin/ +// quux (インストールされたコマンド) +// pkg/ +// linux_amd64/ +// foo/ +// bar.a (インストールされたパッケージオブジェクト) +// +// Build Constraints +// +// ビルド制約はビルドタグとしても知られており、 +// 以下に示す文字列で始まる行コメントです。 +// +// // +build +// +// この後にそのファイルがパッケージに含められる条件を列挙します。 +// 制約はGoに限らずあらゆる種類のソースコードに記載できますが、 +// ファイルの先頭付近に存在する必要があり、 +// 空行や他の行コメントよりも先に存在する必要があります。 +// まとめると、Goのファイルではビルド制約はパッケージ文より前に存在しなければならないということになります。 +// +// パッケージドキュメントとビルド制約を識別するために、 +// ビルド制約の前に空行を1行入れる必要があります。 +// +// ビルド制約は、スペースで区切るとOR条件になり、 +// カンマで区切るとAND条件になります。 +// それぞれの語は英数字の単語で、先頭に!を付けると否定になります。 +// 以下にビルド制約の例を示します: +// +// // +build linux,386 darwin,!cgo +// +// これは以下のような論理式を意味します。 +// +// (linux AND 386) OR (darwin AND (NOT cgo)) +// +// ひとつのファイルは複数のビルド制約を持つことができます。 +// 全体としての制約は個々の制約をANDで組み合わせたものになります。 +// 以下のようなビルド制約があるとします: +// +// // +build linux darwin +// // +build 386 +// +// これは以下のような論理式を意味します: +// +// (linux OR darwin) AND 386 +// +// 以下の条件は毎回のビルドで満たされます: +// +// - runtime.GOOSで示される対象OS +// - runtime.GOARCHで示される対象アーキテクチャ +// - "gc"あるいは"gccgo"のどちらかの使われているコンパイラ +// - ctxt.CgoEnabledがtrueの場合、"cgo" +// - Goのバージョンが1.1の場合、"go1.1" +// - Goのバージョンが1.2の場合、"go1.2" +// - ctxt.BuildTagsに列挙された追加の条件 +// +// ファイル名から拡張子と(あれば)_test接尾詞を除いたものが、 +// 以下のパターンのいずれかにマッチする場合: +// *_GOOS +// *_GOARCH +// *_GOOS_GOARCH +// (例: source_windows_amd64.go)または以下のリテラルである場合: +// GOOS +// GOARCH +// (例: windows.go) GOOSとGOARCHはそれぞれ既知のOSとアーキテクチャの値を取り、 +// ファイルはそれらの語が示すビルド制約を暗黙的に持つものとして扱われます。 +// +// ファイルをビルドしないようにするには以下のようにします: +// +// // +build ignore +// +// (他の条件に関係なく``ignore''は効果を発揮します。) +// +// ファイルをcgoだけを使ってLinuxとOS X上だけでビルドするには以下のようにします: +// +// // +build linux,cgo darwin,cgo +// +// このようなファイルはたいてい他のシステム用のデフォルトの振る舞いを実装したファイルとペアになっており、 +// そちらのファイルには以下のような制約が必要になるでしょう: +// +// // +build !linux,!darwin !cgo +// +// dns_windows.goというファイル名を付けると、 +// Windows向けにパッケージをビルドしたときだけそのファイルが含まれるようになります。 +// 同様に、math_386.sは32ビットのx86向けにパッケージをビルドしたときだけ含まれます。 +// +// 本ドキュメントは以下のドキュメントを翻訳しています: https://code.google.com/p/go/source/browse/src/pkg/go/build/doc.go?r=5a3e576cfb5623d43ba2744d655d0c2c7b6bebd1 +// +package build