#navi_header|C言語系| GNU Autoconfの自分用メモ - GNU Autoconf 本家 -- http://www.gnu.org/software/autoconf/ - GNU Autoconf HTMLドキュメント(1ページ版) -- http://www.gnu.org/software/autoconf/manual/autoconf.html 以下は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 ---' #more|| #outline|| ---- * "configure" スクリプトが出来るまで + ソースコードを準備する。 + autoscanを実行する → "configure.scan"ファイルが生成される。 + "configure.scan"ファイルの中身を確認し、適宜調整して "configure.ac" にリネーム + Makefileと連動させる場合: ++ Makefile.in を用意する。 ++ configure.ac に "AC_CONFIG_FILES([Makefile])" を追記する。 + 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のデフォルト値が定義されたファイルを読みに行く。 #navi_footer|C言語系|