home ホーム search 検索 -  login ログイン  | reload edit datainfo version cmd icon diff delete  | help ヘルプ

C言語系/memos/autoconf

C言語系/memos/autoconf

C言語系 / memos / autoconf
id: 482 所有者: msakamoto-sf    作成日: 2009-11-17 22:09:03
カテゴリ: C言語 

GNU Autoconfの自分用メモ

以下はGNU Autoconf HTMLドキュメントより抜粋したファイル関連図。"*"付がコマンド実行、"[]"囲みはオプショナルファイル or コマンド実行を表す。

step1 : autoscan実行からconfigure.acの準備まで

your source files --> [autoscan*] --> [configure.scan] --> configure.ac

step2 : configure.ac, Makefile.in の準備から autoconf/autoheaderの実行, configureスクリプトの生成まで

configure.ac --.
               |   .------> autoconf* -----> configure
[aclocal.m4] --+---+
               |   `-----> [autoheader*] --> [config.h.in]
[acsite.m4] ---'

Makefile.in -------------------------------> Makefile.in

※aclocalはGNU Automakeに含まれるツールなので、当メモでは取り上げない

step3 : configureスクリプトの生成以降

                       .-------------> [config.cache]
configure* ------------+-------------> config.log
                       |
[config.h.in] -.       v            .-> [config.h] -.
               +--> config.status* -+               +--> make*
Makefile.in ---'                    `-> Makefile ---'

"configure" スクリプトが出来るまで

  1. ソースコードを準備する。
  2. autoscanを実行する → "configure.scan"ファイルが生成される。
  3. "configure.scan"ファイルの中身を確認し、適宜調整して "configure.ac" にリネーム
  4. Makefileと連動させる場合:
    1. Makefile.in を用意する。
    2. configure.ac に "AC_CONFIG_FILES([Makefile])" を追記する。
  5. autoconfを実行する → "configure" スクリプトが生成される。

基本は以上。./configure内部でセットされた変数群は、Makefile.in中では"@変数名@"とすることで置換されるようになる。"@prefix@", "@CC@", "@INSALL@"など。

なおAC_PROG_INSTALLマクロをconfigure.acに追加すると "install-sh" を要求されるようになる。install-sh の"本家"は GNU Automake に含まれている。実行権の付いた"install-sh"という名前のファイルであれば空っぽでもチェックが通るので、とりあえず./configureをpassさせるにはそれでごまかす事も出来る。

configureスクリプトが生成するマクロ定義をヘッダファイル(config.h)に保存するには

"AC_CONFIG_HEADERS"マクロをconfigure.acに追加し、autoheaderコマンドを実行するとヘッダテンプレートが生成される。
なお "AC_CONFIG_HEADER" のように単数形で指定する事も出来る。

AC_CONFIG_HEADER([config.h])
or
AC_CONFIG_HEADERS([config.h])

→ autoheaderにより "config.h.in" が生成される。

autoheaderはconfigure.acがあれば実行可能である。autoconfによりconfigureスクリプトを生成するのは、autoheaderの前でも後ろでも構わない。ただし、エラーのないconfigure.acで動かしたい、というのもあるので、autoconf→autoheaderの順で実行した方が良いかも知れない。

"configure"スクリプトと周辺ファイル

config.cache
チェック結果をキャッシュさせたい時に、./configure オプションに "-C"/"--config-cache"/"--cache-file=config.cache" を指定すると生成される。
config.status
./configureにより生成される実行スクリプトで、これが Makefile.in, config.h.in を読み取り実際のファイルに置換する。
./configureによるチェックは行わず、単純にMakefile/config.hなどの再生成だけを行いたい場合は、config.statusを実行した方が早い。
なお"--recheck"オプションを指定する事で、./configureによるチェックからやり直す事ができる。
config.site
./configureのprefixに従い、"${prefix}/share/config.site", "${prefix}/etc/config.site", CONFIG_SITE環境変数に指定された順でconfigureのデフォルト値が定義されたファイルを読みに行く。


プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2009-11-17 22:17:23
md5:44e648f6a15e86990949ade5b9c5b7ef
sha1:311245cf508746e9b6bfea7da0f3000325e7a3c5
コメント
コメントを投稿するにはログインして下さい。