[ < ] [ > ]   [ << ] [上] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

1. makeの概要

makeユーティリティは、大規模なプログラムのどの部分が再コンパイル されなければならないか、あるいは再コンパイルの命令に関する問題を自動的に 決定します。 本書は、Richard StallmanとRoland McGrathによって実装されたGNU make について書かれたもので、開発自体は、Version 3.76からはPaul D. Smithによって 行なわれています。

GNU make は、IEEE Standard 1003.2-1992 (POSIX.2) の6.2節に適合します。

ここでは、もっとも一般的なC言語によるプログラム例を示しますが、シェルコマンド によって動作するコンパイラを用いるプログラム言語であれば、どんなコンパイラでも このmakeを利用することができます。実際、makeはプログラム自体の 制約を受けず、たとえば一部のファイルが自動的に更新されなければならないような タスクを記述することができます。

makeを使用するためには、プログラムのファイル間の関係を記述する makefileを準備しなければならず、これによってそれぞれのファイルの更新を 指示することになります。一般的には、ソースファイルから次々にコンパイルされる オブジェクトファイルの更新によって実行可能ファイルが作られていきます。

したがって、適切なmakefileがあれば、ソースファイルに変更を加えるたびに この簡単なシェルコマンドを実行すればよいのです。

 
make

これだけで再コンパイルに必要なすべてが行なわれます。makeはどのファイルが 更新されなければならないかを決定するためにmakefileデータベースと ファイルの最終更新時刻を用います。これによって、それぞれのファイルについて データベースに記録された命令が実行されるのです。

また、makeに引数を付加することによって、どのファイルをあるいは どのようにコンパイルするかの制御を行なうこともできます。 See section makeをどのように実行するか.。


[ < ] [ > ]   [ << ] [] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

1.1 マニュアルの読み方

読者がmakeに不慣れだったり、一般的な入門書を探している場合には、 各章の始めの部分を読み、そのあとの節は読み飛ばしてください。各章の 始めの節では入門的な、あるいは一般的なことが記述されていて、続く 節では特殊なまたはテクニカルなことが記述されています。

読者がほかのmakeプログラミングに慣れている場合には、 GNU makeの機能.を読んでください。それにはGNUの makeの拡張されている部分と 非互換性と欠けている機能.にあるように GNUmakeの非互換な部分や機能として持たないものについて記述されています。

また、短時間で要約を見るためには、オプションのサマリー. やクイックリファレンス.や 特別な組み込み済みのターゲット.を参照してください。


[ < ] [ > ]   [ << ] [] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

1.2 問題とバグについて

さらに、読者がmakeについて問題を抱えたり、バグを発見した場合には、 開発者まで報告をお願いします。すべてについての確約はできませんが、 バグフィックスはしていきたいと考えます。

ただし、バグの報告のまえに必ずそれが本当にバグなのかどうかを確認してください。 ドキュメントを慎重に読み返して、試そうとしていることが可能なことかどうかを 確認してください。可能なのかどうかが明確でない場合にはそのことを報告して ください。なぜなら、それ自体がドキュメントのバグである可能性もあるためです。

バグを報告したり、自分でバグフィックスを行なうまえに、問題を再現できる最低限の makefileに分離して、それをmakeの結果とともに送ってください。また、 実行によって期待していた結果についても送ってください。それによって、問題が ドキュメントにあったのかどうかを判断することができます。

そして、たしかに問題がある場合には以下に電子メールを送ってください。

 
    bug-make@gnu.org

その際には、使用したmakeのバージョンを書くようにしてください。 バージョンは、コマンド‘make --version’によって取得できます。併せて、 使用しているマシンのタイプやオペレーティングシステム、さらに可能であれば、 コンフィギュレーションプロセスで生成される‘config.h’の内容も含むように してください。


[ << ] [ >> ]           [冒頭] [目次] [見出し] [ ? ]

この文書は新堂 安孝によって2009年9月22日texi2html 1.82を用いて生成されました。