OSDN Git Service

LaTex用に更新.
[omake-japanese/omake_trans.git] / quickstart.rst
index a2fa90f..f177c6c 100644 (file)
@@ -2,44 +2,44 @@
 
 .. _label2:
 
-2. OMakeクイックスタートガイド
+OMakeクイックスタートガイド
 ==================================
 
 .. _label2.1:
 
-2.1 概要
+概要
 ----------------------------------
 .. omake is designed for building projects that might have source files in several directories. Projects are normally specified using an OMakefile in each of the project directories, and an OMakeroot file in the root directory of the project. The OMakeroot file specifies general build rules, and the OMakefiles specify the build parameters specific to each of the subdirectories. When omake runs, it walks the configuration tree, evaluating rules from all of the OMakefiles. The project is then built from the entire collection of build rules.
 
-OMakeは複数のディレクトリにまたがって存在するソースファイルをビルドするために製作されたツールです。OMakeを使用したプロジェクトは通常、 ``OMakefile`` を各々のプロジェクトディレクトリに置き、 ``OMakeroot`` をプロジェクトのルートディレクトリに置きます。 ``OMakeroot`` には全体的なビルドルールを指定し、 ``OMakefiles`` にはそれぞれのサブディレクトリに固有のビルドパラメータを指定します。いったんOMakeを起動すると、OMakeはまず設定ファイルのあるディレクトリをスキャンし、すべての ``OMakefile`` を評価します。そしてプロジェクトはビルドルールの集合としてビルドされます。
+OMakeは複数のディレクトリにまたがって存在するソースファイルをビルドするために製作されたツールです。OMakeを使用したプロジェクトは通常、 ``OMakefile`` を各々のプロジェクトディレクトリに置き、 ``OMakeroot`` をプロジェクトのルートディレクトリに置きます。 ``OMakeroot`` には一般的なビルドルールを指定し、 ``OMakefiles`` にはそれぞれのサブディレクトリに固有のビルドパラメータを指定します。いったんOMakeを起動すると、OMakeはまず設定ファイルのあるディレクトリをスキャンし、すべての ``OMakefile`` を評価します。そしてプロジェクトは全体のビルドルールの集合としてビルドされます。
 
 .. index::
    single: .SCANNER
 .. _label2.1.1:
 
-2.1.1 自動的な依存関係の解析
+自動的な依存関係の解析
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 .. Dependency analysis has always been problematic with the make(1) program. omake addresses this by adding the .SCANNER target, which specifies a command to produce dependencies. For example, the following rule
 
-従来のmake(1)プログラムでは以前からずっと依存関係の解析が問題となっていました 。OMakeではこの問題を、依存関係を生成するコマンドを指定した ``.SCANNER`` ターゲットを追加することで解決します。たとえば、以下のルール ::
+従来のmake(1)プログラムでは以前から依存関係の解析が問題となっていました。OMakeではこの問題を、依存関係を生成するコマンドを指定した ``.SCANNER`` ターゲットを追加することで解決しました。たとえば、以下のルール ::
 
     .SCANNER: %.o: %.c
         $(CC) $(INCLUDE) -MM $<
 
 .. is the standard way to generate dependencies for .c files. omake will automatically run the scanner when it needs to determine dependencies for a file.
 
-は ``.c`` ファイルの依存関係を生成する常套手段です。OMakeはソースファイルの依存関係を知る必要がある場合、自動的にソースファイルをスキャンして依存関係を特定します。
+は ``.c`` ファイルの依存関係を生成する常套手段です。OMakeはソースファイルの依存関係を知る必要がある時点で、自動的にソースファイルをスキャンし、依存関係を特定します。
 
 .. index::
    single: MD5
    single: .omakedb
 .. _label2.1.2:
 
-2.1.2 ファイル内容から依存関係を解析
+ファイル内容から依存関係を解析
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 .. Dependency analysis in omake uses MD5 digests to determine whether files have changed. After each run, omake stores the dependency information in a file called .omakedb in the project root directory. When a rule is considered for execution, the command is not executed if the target, dependencies, and command sequence are unchanged since the last run of omake. As an optimization, omake does not recompute the digest for a file that has an unchanged modification time, size, and inode number.
 
\81©ã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\81®ä¾\9då­\98é\96¢ä¿\82ã\81\8cå¤\89æ\9b´ã\81\95ã\82\8cã\81\9fã\81\8bã\82\92ç\9f¥ã\82\8bã\81\9fã\82\81ã\81«ã\80\81OMakeã\81§ã\81¯MD5ã\81«ã\82\88ã\82\8bè¦\81ç´\84ã\82\92ç\94¨ã\81\84ã\81¦ã\83\81ã\82§ã\83\83ã\82¯ã\82\92è¡\8cã\81\84ã\81¾ã\81\99ã\80\82å\90\84ã\80\85ã\81®ã\83\87ã\82£ã\83¬ã\82¯ã\83\88ã\83ªã\81§OMakeã\81\8cå®\9fè¡\8cã\81\95ã\82\8cã\81\9få¾\8cã\81«ã\80\81 OMakeã\81¯ä¾\9då­\98é\96¢ä¿\82ã\81®æ\83\85å ±ã\82\92ã\83«ã\83¼ã\83\88ã\83\87ã\82£ã\83¬ã\82¯ã\83\88ã\83ªã\81® ``.omakedb`` ã\83\95ã\82¡ã\82¤ã\83«ã\81«ä¿\9då­\98ã\81\97ã\81¾ã\81\99ã\80\82ã\82\82ã\81\97ã\81\84ã\81£ã\81\9fã\82\93OMakeã\81\8cä¾\9då­\98é\96¢ä¿\82ã\81®ã\83«ã\83¼ã\83«ã\83\95ã\82¡ã\82¤ã\83«ã\82\92ä¿\9då­\98ã\81\97ã\81\9fã\81®ã\81ªã\82\89ã\80\81OMakeã\81\8cæ\9c\80å¾\8cã\81«å®\9fè¡\8cã\81\95ã\82\8cã\81\9få¾\8cã\81«ã\80\81ã\82¿ã\83¼ã\82²ã\83\83ã\83\88ã\80\81ä¾\9då­\98é\96¢ä¿\82ã\80\81ã\82½ã\83¼ã\82¹ã\82³ã\83¼ã\83\89ã\81®å¤\89æ\9b´ã\81\8cã\81ªã\81\84å ´å\90\88ã\81¯ã\80\81ã\83\93ã\83«ã\83\89ã\81¯å®\9fè¡\8cã\81\95ã\82\8cã\81¾ã\81\9bã\82\93ã\80\82ã\81¾ã\81\9fæ\9c\80é\81©å\8c\96ã\81¨ã\81\97ã\81¦ã\80\81OMakeã\81¯ä¿®æ­£æ\97¥æ\99\82ã\80\81ã\82µã\82¤ã\82ºã\80\81ã\83\8eã\83¼ã\83\89ç\95ªå\8f·ã\81«å¤\89æ\9b´ã\81®ã\81ªã\81\84ã\83\95ã\82¡ã\82¤ã\83«ã\81«ã\81¤ã\81\84ã\81¦MD5ã\81®å\86\8dè¨\88ç®\97ã\82\92è¡\8cã\81\84ません。
\81©ã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\81®ä¾\9då­\98é\96¢ä¿\82ã\81\8cå¤\89æ\9b´ã\81\95ã\82\8cã\81\9fã\81\8bã\82\92ç\9f¥ã\82\8bã\81\9fã\82\81ã\81«ã\80\81OMakeã\81§ã\81¯MD5ã\81«ã\82\88ã\82\8bè¦\81ç´\84ã\82\92ç\94¨ã\81\84ã\81¦ã\83\81ã\82§ã\83\83ã\82¯ã\82\92è¡\8cã\81\84ã\81¾ã\81\99ã\80\82å\90\84ã\80\85ã\81®ã\83\87ã\82£ã\83¬ã\82¯ã\83\88ã\83ªã\81§OMakeã\81\8cå®\9fè¡\8cã\81\95ã\82\8cã\81\9få¾\8cã\81«ã\80\81 OMakeã\81¯ä¾\9då­\98é\96¢ä¿\82ã\81®æ\83\85å ±ã\82\92ã\83\97ã\83­ã\82¸ã\82§ã\82¯ã\83\88ã\83«ã\83¼ã\83\88ã\83\87ã\82£ã\83¬ã\82¯ã\83\88ã\83ªã\81® ``.omakedb`` ã\83\95ã\82¡ã\82¤ã\83«ã\81«ä¿\9då­\98ã\81\97ã\81¾ã\81\99ã\80\82ã\81\84ã\81£ã\81\9fã\82\93OMakeã\81\8cä¾\9då­\98é\96¢ä¿\82ã\81®ã\83«ã\83¼ã\83«ã\83\95ã\82¡ã\82¤ã\83«ã\82\92ä¿\9då­\98ã\81\97ã\81\9fã\81®ã\81§ã\81\82ã\82\8cã\81°ã\80\81OMakeã\81\8cæ\9c\80å¾\8cã\81«å®\9fè¡\8cã\81\95ã\82\8cã\81\9fæ\99\82ç\82¹ã\81§ã\80\81ã\82¿ã\83¼ã\82²ã\83\83ã\83\88ã\80\81ä¾\9då­\98é\96¢ä¿\82ã\80\81ã\82½ã\83¼ã\82¹ã\82³ã\83¼ã\83\89ã\81«é\96¢ã\81\97ã\81¦å¤\89æ\9b´ã\81\8cã\81ªã\81\84å ´å\90\88ã\80\81ã\83\93ã\83«ã\83\89ã\81¯å®\9fè¡\8cã\81\95ã\82\8cã\81¾ã\81\9bã\82\93ã\80\82ã\81¾ã\81\9fæ\9c\80é\81©å\8c\96ã\81¨ã\81\97ã\81¦OMakeã\81¯MD5ã\81®å\86\8dè¨\88ç®\97ã\82\92ã\80\81修正æ\97¥æ\99\82ã\80\81ã\82µã\82¤ã\82ºã\80\81ã\83\8eã\83¼ã\83\89ç\95ªå\8f·ã\81«å¤\89æ\9b´ã\81®ã\81ªã\81\84ã\83\95ã\82¡ã\82¤ã\83«ã\81«é\96¢ã\81\97ã\81¦ã\81¯å®\9fè¡\8cã\81\97ません。
 
 .. index::
    single: make
@@ -48,7 +48,7 @@ OMakeは複数のディレクトリにまたがって存在するソースファ
    single: .SUFFIXES
 .. _label2.2:
 
-2.2 既にmakeに慣れている人向けの注意事項
+既にmakeに慣れている人向けの注意事項
 ------------------------------------------
 .. For users already familiar with the make(1) command, here is a list of differences to keep in mind when using omake.
 
@@ -59,7 +59,7 @@ OMakeは複数のディレクトリにまたがって存在するソースファ
     * Scoping is significant: you should define variables and .PHONY targets (see Section 8.10) before they are used.
     * Subdirectories are incorporated into a project using the .SUBDIRS: target (see Section 8.8). 
 
-* omakeを用いると、あなたがビルドルールを自力で定義するよりもはるかに省力化できます。このシステムは多くのビルドイン関数を提供しています( ``StaticCLibrary`` や ``CProgram`` など)。第13章で説明した事項を用いると、これらのビルドはより簡単になります。
+* omakeを用いると、あなたがビルドルールを自力で定義するよりもはるかに省力化できます。このシステムは多くのビルドイン関数を提供しています( ``StaticCLibrary`` や ``CProgram`` など)。第13章(:ref:`label13`)で説明した事項を用いると、これらのビルドはより簡単になります。
 * ``.SUFFIXES`` や ``.suf1.suf2:`` などを用いた暗黙のルール(implicit rule)はサポートされていません。その代わりにあなたはワイルドカード ``%.suf2: %.suf1`` を用いるべきです。
 * スコーピングは重要です。あなたは変数や ``.PHONY`` ターゲットを、使用する前に定義すべきです。(詳細は ":ref:`label8.10`" を参照してください。)
 * サブディレクトリをプロジェクトに組み入れる際には、 ``.SUBDIRS:`` ターゲットを用います。(詳細は ":ref:`label8.8`" を参照してください。)
@@ -74,7 +74,7 @@ OMakeは複数のディレクトリにまたがって存在するソースファ
    single: .DEFAULT
 .. _label2.3:
 
-2.3 小さなCプログラムのビルド
+小さなCプログラムのビルド
 --------------------------------
 .. To start a new project, the easiest method is to change directories to the project root and use the command omake --install to install default OMakefiles.
 
@@ -111,7 +111,7 @@ OMakeは複数のディレクトリにまたがって存在するソースファ
 
 .. Now we can run omake to build the project. Note that the first time we run omake, it both scans the hello_code.c file for dependencies, and compiles it using the cc compiler. The status line printed at the end indicates how many files were scanned, how many were built, and how many MD5 digests were computed.
 
-これで私たちはこのプロジェクトをビルドするために、OMakeを実行することができます。最初に私たちがOMakeを実行した場合、OMakeは依存関係の解析に ``hello_code.c`` を解析し、 ``cc`` コンパイラを用いてコンパイルします。一番最後の行にはどれだけ多くのファイルが解析され、どれだけ多くビルドされ、そしてどれだけ多くのMD5が計算されたのかが表示されます。 ::
+これで私たちはこのプロジェクトをビルドするために、OMakeを実行することができます。最初に私たちがOMakeを実行した時点で、OMakeは依存関係の解析に ``hello_code.c`` を解析し、 ``cc`` コンパイラを用いてコンパイルします。一番最後の行にはどれだけ多くのファイルが解析されて、どれだけ多くビルドされて、そしてどれだけ多くのMD5が計算されたのかが表示されます。 ::
 
     $ omake hello
     *** omake: reading OMakefiles
@@ -130,7 +130,7 @@ OMakeは複数のディレクトリにまたがって存在するソースファ
 
 .. If we want to change the compile options, we can redefine the CC and CFLAGS variables before the CProgram line. In this example, we will use the gcc compiler with the -g option. In addition, we will specify a .DEFAULT target to be built by default. The EXE variable is defined to be .exe on Win32 systems; it is empty otherwise.
 
-もし私たちがコンパイルオプションを変更したいと思った場合、 ``CProgram`` と書いてある行の前に ``CC`` と ``CFLAGS`` 変数を再定義することができます。たとえば、現在私たちは ``-g`` オプションで ``gcc`` コンパイラを用いたいとします。加えて、デフォルトでビルドするために ``.DEFAULT`` ターゲットを指定したい、さらにWin32システムで ``.exe`` と定義された ``EXE`` 変数を用いたいとします。これらの要望は以下のコードで実現できます。 ::
+私たちがコンパイルオプションを変更したいと思った場合、 ``CProgram`` と書いてある行の前に ``CC`` と ``CFLAGS`` 変数を再定義することで可能となります。たとえば、現在私たちは ``-g`` オプションで ``gcc`` コンパイラを用いたいとします。加えて、デフォルトでビルドするために ``.DEFAULT`` ターゲットを指定したい、さらにWin32システムで ``.exe`` と定義された ``EXE`` 変数を用いたいとします。これらの要望は以下のコードで実現できます。 ::
 
     CC = gcc
     CFLAGS += -g
@@ -154,7 +154,7 @@ OMakeは複数のディレクトリにまたがって存在するソースファ
 
 .. We can, of course, include multiple files in the program. Suppose we write a new file hello_helper.c. We would include this in the project as follows.
 
-もちろん、プログラム中に複数のファイルをインクルードすることもできます。 ``hello_helper.c`` という新しいファイルを追加したとしましょう。以下のように ``Omakefile`` を変更することで対応できます。 ::
+もちろん、プログラム中に複数のファイルをインクルードすることもできます。 ``hello_helper.c`` という新しいファイルを追加したとしましょう。以下のように ``OMakefile`` を変更することで対応できます。 ::
 
     CC = gcc
     CFLAGS += -g
@@ -165,11 +165,11 @@ OMakeは複数のディレクトリにまたがって存在するソースファ
    single: StaticCLibrary()
 .. _label2.4:
 
-2.4  巨大なプロジェクト
+巨大なプロジェクト
 -------------------------
 .. As the project grows it is likely that we will want to build libraries of code. Libraries can be built using the StaticCLibrary function. Here is an example of an OMakefile with two libraries.
 
\82³ã\83¼ã\83\89ã\81\8bã\82\89ã\83©ã\82¤ã\83\96ã\83©ã\83ªã\82\92ã\83\93ã\83«ã\83\89ã\81\97ã\81\9fã\81\84ã\81ªã\81©ã\81®ã\82\88ã\81\86ã\81ªå ´å\90\88ã\80\81ã\83\97ã\83­ã\82¸ã\82§ã\82¯ã\83\88ã\81¯å¾\90ã\80\85ã\81«è\82¥å¤§å\8c\96ã\81\97ã\81¾ã\81\99。ライブラリは ``StaticCLibrary`` 関数を用いることでビルドすることができます。以下は二つのライブラリをビルドする際の ``OMakefile`` のサンプルです。 ::
\83\97ã\83­ã\82¸ã\82§ã\82¯ã\83\88ã\81\8cæ\88\90é\95·ã\81\99ã\82\8bã\81«ã\81¤ã\82\8cã\81¦ã\80\81ã\82³ã\83¼ã\83\89ã\81\8bã\82\89ã\83©ã\82¤ã\83\96ã\83©ã\83ªã\82\92ã\83\93ã\83«ã\83\89ã\81\97ã\81\9fã\81\84ã\81¨æ\80\9dã\81\86ã\81\8bã\82\82ã\81\97ã\82\8cã\81¾ã\81\9bã\82\93。ライブラリは ``StaticCLibrary`` 関数を用いることでビルドすることができます。以下は二つのライブラリをビルドする際の ``OMakefile`` のサンプルです。 ::
 
     CC = gcc
     CFLAGS += -g
@@ -194,15 +194,15 @@ OMakeは複数のディレクトリにまたがって存在するソースファ
    single: if
 .. _label2.5:
 
-2.5  サブディレクトリ
+サブディレクトリ
 --------------------------
 .. As the project grows even further, it is a good idea to split it into several directories. Suppose we place the libfoo and libbar into subdirectories.
 
\81\95ã\82\89ã\81«ã\83\97ã\83­ã\82¸ã\82§ã\82¯ã\83\88ã\81\8cè\82¥å¤§å\8c\96ã\81\99ã\82\8bå ´å\90\88、いくつかのディレクトリにコードファイルを分割することは良いアイデアです。現在私たちは ``libfoo`` と ``libbar`` をサブディレクトリに置いてあるものとしましょう。
\83\97ã\83­ã\82¸ã\82§ã\82¯ã\83\88ã\81\8cã\81\95ã\82\89ã\81«æ\88\90é\95·ã\81\97ã\81¦ã\81\84ã\81\8fæ\99\82ç\82¹ã\81§、いくつかのディレクトリにコードファイルを分割することは良いアイデアです。現在私たちは ``libfoo`` と ``libbar`` をサブディレクトリに置いてあるものとしましょう。
 
 .. In each subdirectory, we define an OMakefile for that directory. For example, here is an example OMakefile for the foo subdirectory.
 
-まず、 ``OMakefile`` を各々のサブディレクトリ内にきます。例えば、以下は ``foo/`` サブディレクトリ内の ``OMakefile`` のサンプルです。 ::
+まず、 ``OMakefile`` を各々のサブディレクトリ内にきます。例えば、以下は ``foo/`` サブディレクトリ内の ``OMakefile`` のサンプルです。 ::
 
     INCLUDES += .. ../bar
 
@@ -320,6 +320,11 @@ OMakeは複数のディレクトリにまたがって存在するソースファ
 
 ``export`` によって ``if`` 文の中にある変数が外部にエクスポートされます。 *OMakeでの変数はスコープ化* されており、ネストされたブロック内の変数は通常、外部のブロックから使用することはできません。 ``export`` はネストされたブロック内の変数を、親のブロックに移す命令です。
 
+.. note::
+  訳注: 今回の例では ``$(OSTYPE)`` 変数を用いて場合分けを行っていますが、 ``$(CC)`` 変数に関しては省略することができます。なぜなら、 ``Unix`` 上では ``$(CC)`` は ``gcc`` , ``Win32`` 上では ``cl /nologo`` が自動的に束縛されるからです。
+  
+  大抵の場合において、このような設定変数は異なるプラットフォーム上においても正常に動作するよう設計されています(詳細は ":ref:`label13.5.2`" を参照してください)。もちろん、その他になにか追加オプションを指定したい場合には、このような場合分けが有効となるでしょう。
+
 .. Finally, for this example, we decide to copy all libraries into a common lib directory. We first define a directory variable, and replace occurrences of the lib string with the variable.
 
 最後に、私たちはすべてのライブラリを共通の ``lib/`` ディレクトリにコピーしたいものとします。私たちはまずはじめにディレクトリの変数を定め、そして ``lib`` の文字列を変数で置き換えます。 ::
@@ -386,9 +391,14 @@ OMakeは複数のディレクトリにまたがって存在するソースファ
 
 ``foo/`` ディレクトリ内において ``INCLUDES`` 変数は文字列 ``.. . ../bar`` として評価されます。また ``bar/`` ディレクトリ内において、 ``INCLUDES`` 変数は文字列 ``.. ../foo . ../win32`` として評価されます。ルートディレクトリでは、 ``INCLUDES`` 変数は文字列 ``. foo bar win32`` として評価されます。
 
+.. note::
+  訳注: 今までの議論の中で「 *Win32プラットフォーム上でディレクトリのセパレータに/(スラッシュ)を指定していいのだろうか?\\(バックスラッシュ)を使わないといけないのでは?* 」と疑問に思った方も多いと思います。実は、この点に関しては心配いりません。omakeはたとえWin32上で ``/`` を使っていたとしても、実際の評価ではー非常に奇妙に思われるかもしれませんがー ``\`` が用いられるのです。同様に、セパレータに ``\`` を用いたとしてもUnixプラットフォーム上では ``/`` と変換されます。
+  
+  このように、ディレクトリのセパレータは ``/`` , ``\`` どちらを使っても、異なるプラットフォーム上で正常に動作します。ただし、 ``\`` はエスケープ文字として使用されることが多いため、思わぬ誤動作を引き起こすことがあるかもしれません。大抵の場合、ディレクトリのセパレータは ``/`` を使うことをおすすめします(詳細は ":ref:`label10.4`" を参照してください)。
+  
 .. _label2.6:
 
-2.6  その他の考慮事項
+その他の考慮事項
 --------------------------
 .. omake also handles recursive subdirectories. For example, suppose the foo directory itself contains several subdirectories. The foo/OMakefile would then contain its own .SUBDIRS target, and each of its subdirectories would contain its own OMakefile.
 
@@ -478,11 +488,11 @@ OMakeはまたリソースのあるサブディレクトリも扱うことがで
    single: OMakeroot
 .. _label2.8:
 
-2.8  OMakefileとOMakeroot
+OMakefileとOMakeroot
 ------------------------------------
 .. OMake uses the OMakefile and OMakeroot files for configuring a project. The syntax of these files is the same, but their role is slightly different. For one thing, every project must have exactly one OMakeroot file in the project root directory. This file serves to identify the project root, and it contains code that sets up the project. In contrast, a multi-directory project will often have an OMakefile in each of the project subdirectories, specifying how to build the files in that subdirectory.
 
\83\97ã\83­ã\82¸ã\82§ã\82¯ã\83\88ã\82\92設å®\9aã\81\99ã\82\8bé\9a\9bã\80\81OMakeã\81¯ ``OMakefile`` ã\81¨ ``OMakeroot`` ã\81®2ã\81¤ã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\82\92使ç\94¨ã\81\97ã\81¾ã\81\99ã\80\82ã\81\93ã\82\8cã\82\89ã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\81®æ\96\87æ³\95は同じですが、役割は全く異なります。さらに付け加えると、すべてのプロジェクトは ``OMakeroot`` ファイルをプロジェクトのルートディレクトリに必ず置かなければなりません。このファイルはこのディレクトリがプロジェクトのルートディレクトリであることを決め、さらにプロジェクトをセットアップするためのコードを含んでいます。対照的に、複数のディレクトリが存在するプロジェクトは、どのようにサブディレクトリ内のファイルをビルドするのかを設定した ``OMakefile`` を、各々のプロジェクトのサブディレクトリに置くことになります。
\83\97ã\83­ã\82¸ã\82§ã\82¯ã\83\88ã\82\92設å®\9aã\81\99ã\82\8bé\9a\9bã\80\81OMakeã\81¯ ``OMakefile`` ã\81¨ ``OMakeroot`` ã\81®2ã\81¤ã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\82\92使ç\94¨ã\81\97ã\81¾ã\81\99ã\80\82ã\81\93ã\82\8cã\82\89ã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\81®æ§\8bæ\96\87は同じですが、役割は全く異なります。さらに付け加えると、すべてのプロジェクトは ``OMakeroot`` ファイルをプロジェクトのルートディレクトリに必ず置かなければなりません。このファイルはこのディレクトリがプロジェクトのルートディレクトリであることを決め、さらにプロジェクトをセットアップするためのコードを含んでいます。対照的に、複数のディレクトリが存在するプロジェクトは、どのようにサブディレクトリ内のファイルをビルドするのかを設定した ``OMakefile`` を、各々のプロジェクトのサブディレクトリに置くことになります。
 
 .. Normally, the OMakeroot file is boilerplate. The following listing is a typical example.
 
@@ -509,18 +519,18 @@ OMakeはまたリソースのあるサブディレクトリも扱うことがで
 
 .. Normally, the OMakeroot file should be small and project-independent. Any project-specific configuration should be placed in the OMakefiles of the project.
 
-通常、 ``OMakeroot`` ファイルはサイズが小さく、かつプロジェクトから独立しています。プロジェクト有の設定はすべてプロジェクト上の ``OMakefile`` に設定すべきです。
+通常、 ``OMakeroot`` ファイルはサイズが小さく、かつプロジェクトから独立しています。プロジェクト有の設定はすべてプロジェクト上の ``OMakefile`` に設定すべきです。
 
 .. index::
    single: vmount()
    single: 仮想的なマウント
 .. _label2.9:
 
-2.9 複数のバージョンのサポート
+複数のバージョンのサポート
 -----------------------------------
 .. OMake version 0.9.6 introduced preliminary support for multiple, simultaneous versions of a project. Versioning uses the vmount(dir1, dir2) function, which defines a “virtual mount” of directory dir1 over directory dir2. A “virtual mount” is like a transparent mount in Unix, where the files from dir1 appear in the dir2 namespace, but new files are created in dir2. More precisely, the filename dir2/foo refers to: a) the file dir1/foo if it exists, or b) dir2/foo otherwise.
 
-OMake バージョン 0.9.6では、複数の同じバージョンのプロジェクトや、予備として用いる複数のプロジェクトに関するサポートを導入しました。 ``vmount(dir1, dir2)`` 関数を用いることで、 ``dir1/`` ディレクトリを ``dir2/`` ディレクトリに『仮想的にマウント』することができます。『仮想的なマウント』はUnixにて、 ``dir1/`` ディレクトリ内のファイルを ``dir2/`` ディレクトリにマウントするが、新しいファイルは ``dir2/`` ディレクトリに作られるようなものです。さらに具体的には、ファイル ``dir2/foo`` は、もし ``dir1/foo`` が存在している場合 ``dir1/foo`` に置き換わりますが、存在していない場合は ``dir2/foo`` が用いられます。
+OMake バージョン 0.9.6では、複数の同じバージョンのプロジェクトや、予備として用いる複数のプロジェクトに関するサポートを導入しました。 ``vmount(dir1, dir2)`` 関数を用いることで、 ``dir1/`` ディレクトリを ``dir2/`` ディレクトリに『仮想的にマウント』することができます。『仮想的なマウント』はUnixにて、 ``dir1/`` ディレクトリ内のファイルを ``dir2/`` ディレクトリにマウントするが、新しいファイルは ``dir2/`` ディレクトリに作られるようなものです。さらに具体的には、ファイル ``dir2/foo`` は、 ``dir1/foo`` が存在している場合は ``dir1/foo`` に置き換わりますが、存在していない場合は ``dir2/foo`` が用いられます。
 
 .. The vmount function makes it easy to specify multiple versions of a project. Suppose we have a project where the source files are in the directory src/, and we want to compile two versions, one with debugging support and one optimized. We create two directories, debug and opt, and mount the src directory over them.
 
@@ -542,24 +552,24 @@ OMake バージョン 0.9.6では、複数の同じバージョンのプロジ
 
 .. The -l option is optional. It specifies that files form the src directory should be linked into the target directories (or copied, if the system is Win32). The links are added as files are referenced. If no options are given, then files are not copied or linked, but filenames are translated to refer directly to the src/ files.
 
-``-l`` オプションはなくても構いません。それを指定することで ``src/`` ディレクトリのファイルは、ターゲットとなるディレクトリにリンクされます(システムがWin32の場合、ファイルはコピーされます)。ファイルが関連付けられるようにファイルへのリンクが追加されます。もし何もオプションが与えられていない場合、ファイル名は直接 ``src/`` ディレクトリのファイル名に変換されます。
+``-l`` オプションはなくても構いません。それを指定することで ``src/`` ディレクトリのファイルは、ターゲットとなるディレクトリにリンクされます(システムがWin32の場合、ファイルはコピーされます)。ファイルが関連付けられるようにファイルへのリンクが追加されます。何もオプションが与えられていない場合、ファイル名は直接 ``src/`` ディレクトリのファイル名に変換されます。
 
 .. Now, when a file is referenced in the debug directory, it is linked from the src directory if it exists. For example, when the file debug/OMakefile is read, the src/OMakefile is linked into the debug/ directory.
 
-``debug/`` ディレクトリ内のファイルが参照された場合、もし ``src/`` ディレクトリにそのファイルが存在するならば、 ``debug/`` ディレクトリのファイルは ``src/`` のファイルにリンクされます。例えば、 ``debug/OMakefile`` が参照された場合、 ``src/OMakefile`` が ``debug/OMakefile`` としてリンクされます。
+``debug/`` ディレクトリ内のファイルが参照された時点で、もし ``src/`` ディレクトリにそのファイルが存在するならば、 ``debug/`` ディレクトリのファイルは ``src/`` のファイルにリンクされます。例えば、 ``debug/OMakefile`` が参照された場合、 ``src/OMakefile`` が ``debug/OMakefile`` としてリンクされます。
 
 .. The vmount model is fairly transparent. The OMakefiles can be written as if referring to files in the src/ directory—they need not be aware of mounting. However, there are a few points to keep in mind.
 
-``vmount`` 関数の動作はだいぶ分かりやすいです。あなたは ``OMakefile`` をまるで ``src/`` ディレクトリ内のファイルが関連付けられているかのように書くことができ、マウントについて気にする必要はありません。しかしながら、以下に示すいくつかの注意点を頭に入れておいてください
+``vmount`` 関数の動作はだいぶ透過的です。あなたは ``OMakefile`` をまるで ``src/`` ディレクトリ内のファイルが関連付けられているかのように書くことができ、マウントについて気にする必要はありません。しかしながら、以下に示すいくつかの注意点を頭に入れておきましょう
 
 .. _label2.10:
 
-2.10  注意点
+注意点
 --------------------
 .. When using the vmount function for versioning, it wise to keep the source files distinct from the compiled versions. For example, suppose the source directory contained a file src/foo.o. When mounted, the foo.o file will be the same in all versions, which is probably not what you want. It is better to keep the src/ directory pristine, containing no compiled code.
 
-バージョン管理の目的で ``vmount`` 関数を用いた場合、コンパイルされたファイルをソースファイルから分離することをお勧めします。例えば、ソースディレクトリに ``src/foo.o`` ファイルが含まれている場合を考えましょう。もし ``src/foo.o`` がマウントされてしまった場合、 ``foo.o`` ファイルはすべてのバージョンにおいて共通のファイルになってしまい、おそらくあなたが求めていた動作とは違うものになるでしょう。 ``src/`` ディレクトリにはソースコード以外何もない状態にして、コンパイルされたコードは含めないようにしましょう。
+バージョン管理の目的で ``vmount`` 関数を用いた場合、コンパイルされたファイルをソースファイルから分離することをお勧めします。例えば、ソースディレクトリに ``src/foo.o`` ファイルが含まれている場合を考えましょう。もし ``src/foo.o`` がマウントされてしまったとすると、 ``foo.o`` ファイルはすべてのバージョンにおいて共通のファイルになってしまい、おそらくあなたが求めていた動作とは違うものになるでしょう。 ``src/`` ディレクトリにはソースコード以外何もない状態にして、コンパイルされたコードは含めないようにしましょう。
 
 .. When using the vmount -l option, files are linked into the version directory only if they are referenced in the project. Functions that examine the filesystem (like $(ls ...)) may produce unexpected results. 
 
-``vmount -l`` オプションを用いた場合、ソースファイルがプロジェクトから参照された場合のみ、バージョンディレクトリ内にリンクされます。ファイルシステムを用いる関数( ``$(ls ...)`` など)はあなたが期待していない動作を引き起こすことになります。
+``vmount -l`` オプションを使用したときは、ソースファイルがプロジェクトから参照された場合のみ、バージョンディレクトリ内にリンクされます。ファイルシステムを用いる関数( ``$(ls ...)`` など)はあなたが期待していない動作を引き起こすことになります。