makeとは
makeは、プログラムのビルドプロセスを自動化するためのツールです。makefileというテキスト形式の設定ファイルに記述されたルールに従って、ソースコードのコンパイル、リンク、
インストールといった一連の作業を自動的に実行します。これにより、開発者は手動でこれらの作業を行う手間を省き、より効率的に開発を進めることができます。
makeの主な機能
makeの最大の特長は、複雑に絡み合ったファイルの依存関係を解決できる点です。例えば、ファイルAを処理してファイルBを生成する際、makeは各ファイルの更新時刻(タイムスタンプ)を参照します。ファイルAがファイルBよりも新しい場合のみ処理を実行し、ファイルBが新しい場合は処理をスキップします。これにより、ファイル数が増え、依存関係が複雑になっても、makefileの記述に従って必要最小限の作業のみを自動で実行できます。
また、
Autotoolsというツールを利用することでmakefileを自動生成することも可能です。
UNIX系
ソフトウェアはソースコードの形で配布されることが多く、そのビルド作業にはmakeがほぼ必須のツールとなっています(makeを使用しない
ソフトウェアも稀に存在します)。
makeはプログラムのビルド作業だけでなく、例えば
LaTeXのソースファイルからDVI形式のファイルを生成する作業など、様々な用途に利用できます。また、
バッチ処理を簡略化する目的でも使用可能です。
makeの歴史
makeは、1976年4月に
ベル研究所のスチュアート・フェルドマンによって開発されました。フェルドマンは、同僚が変更したにも関わらず実行ファイルが更新されていないプログラムを無駄にデバッグしている状況を見て、makeの必要性を感じたそうです。
makeの互換性と派生ツール
Linux Standard Base (LSB) でも、makeは指定コマンドの一つとなっています。しかし、近年では
CMakeなどの新しいビルドシステムを利用するケースも増えています。
makeには互換性のない亜種がいくつか存在します。類似のツールとして、
Ruby用のrakeや
Python用のsetupなどがあります。
makeの主な実装
- - GNU make: GNUプロジェクトによる実装で、コマンド名は`gmake`です。
- - Schily 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で構築されたマイクロソフト標準のビルドシステムです。
外部リンク