autoconfとは? わかりやすく解説

Autoconf

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2025/03/23 18:06 UTC 版)

Autoconf
作者 デビッド・マッケンジー
開発元 GNUプロジェクト
初版 1991
最新版
2.72[1]  / 2023年12月22日 (15か月前)
リポジトリ
プログラミング
言語
Perl
対応OS クロスプラットフォーム
種別 プログラミングツール
ライセンス GNU GPL
公式サイト www.gnu.org/software/autoconf/
テンプレートを表示

GNU Autoconfは、コードベースを生成するファイルや、生成されたファイルのパッケージ化またはインストールを行うファイルを生成するconfigureスクリプトを作成するソフトウェア開発ツールである。Autoconfは、AutomakeLibtool、Autoheaderなどのツールとともに、GNU Build System の一部を成している。

Autoconfは、ビルドするコードベースのプログラミング言語に依存しないが、主にC言語C++FortranErlangObjective-Cで使用される。

configureスクリプトは、特定のターゲットシステムにインストールするためのソフトウェアパッケージを構成する。ターゲットシステムで一連のテストを実行した後、configureスクリプトはテンプレートからヘッダファイルMakefileを生成し、ターゲットシステム用にソフトウェアパッケージをカスタマイズする。

使用方法の概要

AutoconfとAutomakeのフローチャート。Autoconfの初期バージョンでは、「configure.ac」というファイルは「configure.in」という名前であった点に注意が必要である。

開発者は、configure.acというファイルにGNU m4言語で命令のリストを記述することで、configureスクリプトの望ましい動作を指定する。一般的なconfigureスクリプトの命令を記述するために、定義済みのm4マクロのライブラリが用意されている。Autoconfは、configure.acの命令を移植可能なconfigureスクリプトに変換する。ビルドを実行するシステムにはAutoconfがインストールされている必要はない。Autoconfは、通常ソフトウェアに同梱されているconfigureスクリプトをビルドするためにのみ必要である。

歴史

Autoconfは、1991年の夏にデビッド・マッケンジーがフリーソフトウェア財団での作業をサポートするために開発を開始した。その後数年間で、さまざまな作者による機能強化が加わり、移植可能な自由ソフトウェアまたはオープンソースソフトウェアを作成するための最も広く使用されているビルド構成システムとなった。

アプローチ

Autoconf は、Perl で使用される Metaconfig パッケージに似ている。以前 X Window System (X11R6.9 まで) で使用されていた imake英語版 システムとは密接に関連しているが、考え方は異なる。

Autoconfの移植性に対するアプローチは、バージョンではなく機能をテストすることである。たとえば、SunOS 4のネイティブCコンパイラはISO Cをサポートしていなかったが、ユーザーまたは管理者がISO C準拠のコンパイラをインストールしている可能性がある。純粋なバージョンベースのアプローチではISO Cコンパイラの存在を検出できないが、機能をテストするアプローチではユーザーがインストールしたISO Cコンパイラを検出できる。このアプローチの理論的根拠は、次の利点を得ることである。

  • configureスクリプトは、新しいシステムや未知のシステムでも妥当な結果を得ることができる。
  • これにより、システム管理者はマシンをカスタマイズし、configureスクリプトでそのカスタマイズを活用できる。
  • 特定の機能がサポートされているかどうかを判断するために、バージョンやパッチ番号などの細かい詳細を追跡する必要はない。

Autoconfは、多くのPOSIXシェル構造が古いシェルに移植できないことや、その中のバグについて、詳細なドキュメントを提供している。また、シェル構文のマクロベースの代替であるM4SHも提供している[2]

動作

Autoconfは、特定のソースコード本体を特徴付けるconfigure.acファイルの内容に基づいてconfigureスクリプトを生成する。configureスクリプトを実行すると、ビルド環境がスキャンされ、下位のconfig.statusスクリプトが生成される。このスクリプトは、他の入力ファイル(最も一般的にはMakefile.in)を、そのビルド環境に適した出力ファイル(Makefile)に変換する。最後に、makeプログラムはMakefileを使用して、ソースコードから実行可能プログラムを生成する。

Autotoolsの複雑さは、ソースコード本体が構築される状況の多様性を反映している。

  • ソースコードファイルが変更された場合は、makeを再実行するだけで十分である。makeは、変更によって影響を受けるソースコード本体の部分のみを再コンパイルする。
  • .inファイルが変更された場合は、config.statusmakeを再実行するだけで十分である。
  • ソースコード本体が別のコンピュータにコピーされた場合は、configure(これはconfig.statusを実行する)とmakeを再実行するだけで十分である。(このため、Autotoolsを使用するソースコードは通常、configureが生成するファイルなしで配布される。)
  • ソースコード本体がより根本的に変更された場合は、configure.ac.inファイルを変更し、その後のすべての手順も実行する必要がある。

ファイルを処理するために、Autoconfはm4マクロシステムのGNU実装を使用する。

Autoconfには、C言語ヘッダファイルの管理に役立つautoheader、Autoconfの初期入力ファイルを作成できるautoscan、プログラムで使用されるCプリプロセッサ識別子を一覧表示できるifnamesなどの補助プログラムがいくつか付属している。

批判

Autoconfは時代遅れの技術を使用しており、多くのレガシーな制限があり、configure.acスクリプトの作成者にとって単純なものを不必要に複雑にしているという批判もある。特に、Autoconfの弱点としてよく挙げられるのは次の点である。

  • 使用されるアーキテクチャの一般的な複雑さ。ほとんどのプロジェクトでは複数の繰り返しが使用される[3][4]
  • Autoconfによって生成されたconfigureスクリプトは、標準化されていない手動のコマンドラインインターフェイスのみを提供すると考える人もいる[5]。一部の開発者が共通の規則を尊重しないのは事実だが、そのような規則は存在し、広く使用されている[6]
  • m4はメジャーな言語ではなく、多くの開発者には知られていない。開発者はAutoconfを非標準のチェックで拡張するためにm4を学ぶ必要がある[5][7]
  • 後方互換性と前方互換性が弱いため、ラッパースクリプトが必要である[8]
  • Autoconfによって生成されたスクリプトは一般的に大きく、かなり複雑である。広範なログが生成されるが、デバッグは依然として困難である。

これらの制限のため、GNU Build System を使用していたいくつかのプロジェクトは、CMakeSConsなどの別のビルドシステムに切り替えた[3][9]

関連項目

脚注

  1. ^ "autoconf-2.72 released [stable"]; 出版日: 2023年12月22日; 閲覧日: 2023年12月25日.
  2. ^ Portable Shell”. Autoconf. 2020年1月20日閲覧。
  3. ^ a b Neundorf, Alexander (2006年6月21日). “Why the KDE project switched to CMake -- and how”. 2025年2月6日閲覧。
  4. ^ Kamp, Poul-Henning (2012-08-15). “A Generation Lost in the Bazaar”. ACM Queue 10 (8): 20–23. doi:10.1145/2346916.2349257. 
  5. ^ a b McCall, Andrew (2003年6月21日). “Stop the autoconf insanity! Why we need a new build system”. 2009年7月7日時点のオリジナルよりアーカイブ。2025年2月6日閲覧。
  6. ^ GNU Coding Standards”. 2025年2月6日閲覧。
  7. ^ Kamp, Poul-Henning (2010年4月20日). “Did you call them autocrap tools?”. 2017年9月11日時点のオリジナルよりアーカイブ。2017年8月16日閲覧。
  8. ^ Dickey, Thomas. “why i still use autoconf 2.13”. 2025年2月6日閲覧。
  9. ^ Blender.org - Build systems”. 2008年12月2日時点のオリジナルよりアーカイブ。2009年6月10日閲覧。

外部リンク


autoconf

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/06/24 09:56 UTC 版)

Autotools」の記事における「autoconf」の解説

Autoconf (autoconf) はconfigurationスクリプト自動生成するツールである。 ビルド環境自動構築をおこなうconfigurationスクリプト (configure) はそれ自体時に数千行に渡る巨大なスクリプトになる。これを手動記述し維持することは時間浪費でありバグ温床である。このconfigure生成自動でおこなうツールがAutoconfである。 Autoconfはconfigure.acを入力とし、configure出力とする。ユーザーがこのconfigure実行することでビルド環境構築される

※この「autoconf」の解説は、「Autotools」の解説の一部です。
「autoconf」を含む「Autotools」の記事については、「Autotools」の概要を参照ください。

ウィキペディア小見出し辞書の「autoconf」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ


英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「autoconf」の関連用語

autoconfのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



autoconfのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのAutoconf (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、WikipediaのAutotools (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2025 GRAS Group, Inc.RSS