コンテンツにスキップ

Autotools/autoscan

出典: フリー教科書『ウィキブックス(Wikibooks)』

GNU autoscan は、GNU Autotools の一部で、プロジェクトに適した configure.ac テンプレートを自動的に生成するためのツールです。特に、まだ Autoconf に対応していない既存のプロジェクトに対して、最初のステップとして利用されることを目的としています。

主な役割と機能

[編集]
  1. 既存のコードベースのスキャン
    • プロジェクトのソースコードをスキャンし、依存しているライブラリやシステムの特徴を解析します。
  2. configure.ac テンプレートの生成
    • スキャン結果を基に、Autoconf 用のテンプレートファイル (configure.ac) を生成します。
  3. 移植性の向上
    • プロジェクトが異なる環境でコンパイル・実行できるようにするための出発点を提供します。
  4. ヒントの提供
    • プロジェクトに追加すべきマクロや、設定が不足している部分についてのコメントをテンプレートに含めます。

基本的な使用方法

[編集]

以下のコマンドを使用して、プロジェクトのディレクトリで autoscan を実行します:

autoscan [オプション] [ディレクトリ]

実行の流れ

[編集]
  1. プロジェクトのルートディレクトリで autoscan を実行します。
  2. デフォルトで configure.scan というファイルが生成されます。
  3. このファイルを手動で編集し、configure.ac に名前を変更します。

[編集]

基本的な使用例

[編集]
autoscan

このコマンドを実行すると、現在のディレクトリ内のソースコードをスキャンし、configure.scan が生成されます。

出力されたファイルの確認と編集

[編集]

生成された configure.scan を開きます。以下のような内容が含まれます:

AC_INIT([UNKNOWN], [1.0], [bug-report@example.com])
AC_PREREQ([2.69])
AC_CONFIG_SRCDIR([main.c])
AC_CONFIG_HEADERS([config.h])

# Checks for programs.
AC_PROG_CC

# Checks for libraries.

# Checks for header files.
AC_CHECK_HEADERS([stdio.h stdlib.h])

# Checks for typedefs, structures, and compiler characteristics.

# Checks for library functions.

AC_CONFIG_FILES([Makefile])
AC_OUTPUT

編集

[編集]

このテンプレートを編集し、適切な値を設定します。

  • プロジェクト名やバージョン番号
    AC_INIT([MyProject], [1.0], [support@myproject.com])
    
  • ソースコードの基準となるファイル
    AC_CONFIG_SRCDIR([main.c])
    
  • 必要に応じてマクロを追加し、依存関係や特定の機能のチェックを追加します。

ファイル名の変更

[編集]

編集後、configure.scanconfigure.ac に名前を変更します:

mv configure.scan configure.ac

主なオプション

[編集]
  • --help
    • 使用方法を表示します。
  • --version
    • バージョン情報を表示します。
  • -v, --verbose
    • 詳細なログを出力します。
  • -o, --output=FILE
    • 出力ファイル名を指定します(デフォルトは configure.scan)。

生成されたテンプレートのポイント

[編集]
  • コメント
    • スキャン中に自動検出できなかった部分についてコメントが挿入されます。これを手動で補完する必要があります。
  • デフォルト設定
    • プロジェクトでよく使われる基本的なマクロ (AC_INIT, AC_PROG_CC, AC_CONFIG_HEADERS など) が含まれます。
  • 柔軟性
    • スキャン結果に基づく出力が生成されるため、プロジェクトに応じて柔軟にカスタマイズ可能です。

関連ツールとの関係

[編集]
  • Autoconf
    • autoscan は Autoconf の補助ツールであり、生成された configure.ac を元に autoconf を使用して configure スクリプトを生成します。
  • Autoheader
    • AC_CONFIG_HEADERS マクロを利用して、config.h 用のテンプレートを生成する際に役立ちます。
  • Automake
    • configure.ac を Automake と組み合わせることで、Makefile.in を生成するためのベースを提供します。

注意点

[編集]
  1. 自動生成の限界
    • スキャンではすべての依存関係やチェックが検出されるわけではありません。生成されたファイルを手動で補完する必要があります。
  2. プロジェクトの準備
    • プロジェクトのルートディレクトリに必要なファイル(例: ソースコード)が存在しない場合、正しいテンプレートが生成されない可能性があります。
  3. 既存の configure.ac
    • 既に configure.ac が存在する場合、autoscan の使用は推奨されません。既存の設定を上書きする可能性があります。

まとめ

[編集]

GNU autoscan は、Autoconf を使用していないプロジェクトに対して、最初のステップとして役立つツールです。既存のコードベースをスキャンして configure.ac のテンプレートを生成し、移植性の高いプロジェクトを構築するための出発点を提供します。ただし、自動生成されたテンプレートはあくまで基本的なものなので、ユーザーが手動で編集してプロジェクトに適した設定を追加する必要があります。