Make (UNIX)

は、プログラムのビルド作業を自動化するツール。コンパイル、リンク、インストール等のルールを記述したテキストファイル (makefile) に従って、これらの作業を自動的に行う。

 機能 
複雑に関連し合ったファイルの依存関係を解決するのがmakeの長所である。例えば、A というファイルを処理して B というファイルを生成するとき、makeはそれぞれのファイルの更新時刻（タイムスタンプ）を参照し、A が B よりも新しいときには作業を行うが、B が A より新しければ作業は不要と見なして何もしない。ファイル数が増え、依存関係が複雑になっても、makeはmakefileの記述を頼りに必要最低限の作業だけを自動で行う。Autotoolsという別のツールを使う事でmakefileの自動生成が可能である。

UNIX系ソフトウェアは、ソースコードの形で配布されることがある。そのビルド作業にはほぼ必須のツールといえる（ごくまれにmakeを使わないソフトウェアも存在する）。

なお、makeはプログラムコードのビルド以外の用途にも使用可能である。例えば、LaTeXのソースファイルからDVI形式のファイルを生成する作業などにも使用することができる。バッチ処理の簡略化にも使うこともできる。

 歴史 
元々は1976年4月にベル研究所でスチュアート・フェルドマンによって作成された。フェルドマンは、変更されたが実行ファイルが誤って更新されていないプログラムを無駄にデバッグしている同僚の経験から、makeを書くことをひらめいた。

 互換性 
Linux Standard Baseでも指定コマンドになっているLSB Specifications "Linux Standard Base"。最近ではCMakeを使う場合がある。

makeには互換性のない亜種が存在する。同様のツールとしてrake（Ruby用）、setup（Python用）がある。

 makeの実装 
 GNU make - GNUプロジェクトによる実装。コマンド名 gmake
 Schily make - ポータブルで拡張可能なmake。
 BSD make - BSDの実装。
 Microsoft Program Maintenance Utility (make, nmake) - マイクロソフトの実装。makeは極めて初期の処理系にのみ付属。
 PMake - FreeBSDの実装。コマンド名 pmake

 注釈 

 関連項目 
 Apache Maven - Java用のプロジェクト管理ツール
 Apache Ant - Java用のmake
 SCons - makeの代替ユーティリティ
 Ninja - makeの代替ユーティリティ
 CMake - クロスプラットフォームでオープンソースなビルドシステム
 Meson - クロスプラットフォームでオープンソースなビルドシステム
 NAnt - .NET Frameworkで使用できるオープンソースのビルドシステム
 MSBuild - .NET Frameworkで構築されたマイクロソフト標準のビルドシステム

 外部リンク 
 GNU make
 Makepp Home Page
 GNU Make 日本語マニュアル(Coop編)

Category:UNIXのソフトウェア
Category:ビルド自動化
Category:GNUプロジェクトのソフトウェア