make (UNIX)
作者 | スチュアート・フェルドマン |
---|---|
開発元 | ベル研究所 |
初版 | 1977年 |
プログラミング 言語 | C言語 |
対応OS | UNIX系 |
種別 | ビルド・ツール |
機能
[編集]複雑に関連し合ったファイルの依存関係を解決するのがmakeの長所である。例えば、A というファイルを処理して B というファイルを生成するとき、makeはそれぞれのファイルの更新時刻(タイムスタンプ)を参照し、A が B よりも新しいときには作業を行うが、B が A より新しければ作業は不要と見なして何もしない。ファイル数が増え、依存関係が複雑になっても、makeはmakefileの記述を頼りに必要最低限の作業だけを自動で行う。Autotoolsという別のツールを使う事でmakefileの自動生成が可能である。
UNIX系ソフトウェアは、ソースコードの形で配布されることがある。そのビルド作業にはほぼ必須のツールといえる(ごくまれにmakeを使わないソフトウェアも存在する)。
なお、makeはプログラムコードのビルド以外の用途にも使用可能である。例えば、LaTeXのソースファイルからDVI形式のファイルを生成する作業などにも使用することができる。バッチ処理の簡略化にも使うこともできる。
歴史
[編集]元々は1976年4月にベル研究所でスチュアート・フェルドマンによって作成された。フェルドマンは、変更されたが実行ファイルが誤って更新されていないプログラムを無駄にデバッグしている同僚の経験から、makeを書くことをひらめいた。
互換性
[編集]Linux Standard Baseでも指定コマンドになっている[※ 1]。最近では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[※ 2]
注釈
[編集]- ^ LSB Specifications "Linux Standard Base"
- ^ “PMake -- A Tutorial”. freebsd.org. December 11, 2020閲覧。
関連項目
[編集]- Apache Maven - Java用のプロジェクト管理ツール
- Apache Ant - Java用のmake
- SCons - makeの代替ユーティリティ
- Ninja - makeの代替ユーティリティ
- CMake - クロスプラットフォームでオープンソースなビルドシステム
- Meson - クロスプラットフォームでオープンソースなビルドシステム
- NAnt - .NET Frameworkで使用できるオープンソースのビルドシステム
- MSBuild - .NET Frameworkで構築されたマイクロソフト標準のビルドシステム