Automake
開発元 GNUプロジェクト
初版 1996年5月28日 (28年前) (1996-05-28)
最新版
1.17[1] ウィキデータを編集 / 2024年7月11日 (7か月前)
リポジトリ ウィキデータを編集
対応OS クロスプラットフォーム
種別 プログラミングツール
ライセンス GNU General Public License
公式サイト www.gnu.org/software/automake/ ウィキデータを編集
テンプレートを表示

GNU Automake は、コンパイルプロセスの一部を自動化するソフトウェア開発ツールである。必要な依存関係を特定するなどして、一般的なコンパイルの問題を軽減する。

Automakeは Makefile.am というファイルから、1 つ以上の Makefile.in を自動的に生成する。各 Makefile.am には、コンパイラやリンカのフラグ、依存関係とそのバージョンなど、コンパイルされたソフトウェアに便利な変数定義が含まれている。生成された Makefile.in は移植可能で、GNUコーディング標準(英語版)の Makefile 規則に準拠しており、実用的な Makefile を生成するためにconfigureスクリプト(英語版)によって使用される[2]。

フリーソフトウェア財団は、Automake を GNU プログラムの 1 つとして、また GNU Build System の一部として管理している。Automake は、GTK などのいくつかの GNU アプリケーションやライブラリ、またXCircuit(英語版) などの非 GNU ソフトウェアのビルドにも使用される[3] [4]。

プロセス

autoconf と automake のフローチャート

Automake は、プログラマが Makefile 全体を手動で記述するのではなく、高水準言語で Makefile を記述できるようにすることを目的としている。単純なケースでは、次のコードで十分である。

Automake は依存関係情報を自動的に生成する機能も備えており[5]、ソースファイルが変更されると、次に make コマンドを呼び出す際に、どのソースファイルを再度コンパイルする必要があるかがわかる。コンパイラが許可する場合、Automake は依存関係システムを動的にしようとする。つまり、ソースファイルがコンパイルされるたびに、コンパイラにファイルの依存関係リストを再生成するように要求し、そのファイルの依存関係を更新する。言い換えれば、依存関係の追跡はコンパイルプロセスの副次的な影響である。

これは、プログラマがプロジェクトに取り組み始めたときに依存関係が一度だけ検出されるという、一部の静的依存関係システムの問題を回避しようとするものである[6]。

設計

Automake は Perl で書かれており、GNU Autoconf と一緒に使用する必要がある[2]。Automake には次のコマンドが含まれている。

ただし、aclocal は autoconf ユーザーにとって便利な汎用プログラムである。たとえば、GNUコンパイラコレクション (GCC) は、Makefile が手書きであっても aclocal を使用する。

Autoconf と同様に、Automake は完全な下位互換性があるわけではない。たとえば、automake 1.13 で作成されたプロジェクトは、必ずしも automake 1.14 で動作するとは限らない[7]。

関連項目

脚注

  1. ↑ "automake-1.17 released [stable"]; 出版日: 2024年7月11日; 閲覧日: 2024年7月12日.
  2. 1 2 “GNU Automake”. GNU. Free Software Foundation (2021年10月1日). 2024年4月26日閲覧。
  3. ↑ “Compiling the GTK+ libraries”. 2024年4月26日時点のオリジナルよりアーカイブ。2024年4月26日閲覧。
  4. ↑ “XCircuit Compile and Install”. 2024年4月26日閲覧。
  5. ↑ “Automake Manual -- Automatic Dependency Tracking”. GNU.org. 2024年4月26日閲覧。
  6. ↑ “Automake History”. GNU.org. 2024年4月26日閲覧。
  7. ↑ “Re: "make distclean" broken?” (2013年7月16日). 2024年4月26日閲覧。

参考文献

⌬ Phoenix Mesh CID: 未登録 IPFS未登録 📡 0ピア N=1 CRITICAL PQS B66