Autotoolsに関する世界観です。MakeやGNUツールチェインやUNIXシステム管理も参照のこと。
Autoconfは移植性を高めるためのツールで、プログラムをビルドするために使うconfigureというシェルスクリプトを自動作成する。
2017-10-30より。
Autoconfは、設定用のシェルスクリプトのconfigureを自動作成する。
Automakeは、Makefileを自動作成する。
UNIX由来のツールしか使っていないので、追加インストールなしであらゆるパッケージのビルドを実行出来る。
詳細は以下をご覧あれ。
(ふつうのLinuxプログラミング Linuxの仕組みから学べるgccプログラミングの王道を参考に執筆しました。)
configureを使うだけでは、移植性は何も上がっていない。configureを使って自動的に生成されるCのヘッダファイルなどの情報に基づいて、プログラマがコードを書く必要がある。
configureはシステムのあらゆるプラットフォーム固有の情報をスキャンして調べ上げた上で、その情報をCのヘッダファイルなどに自動生成する。
この情報を使って、プログラマがさまざまなプラットフォームに対応するコードを書くことで、移植性を高めることができる。
(以下の文章は、Autotoolsについて何も分かっていない、常識のない自分の書いた文章であるため、一般的な良識と比較して間違ったことを教えています。注意してご覧ください。)
Autoconfには補助ツールとしてAutomakeとlibtoolがある。Automakeを使うと、簡単な記述でMakefileを自動作成してくれる。
Automakeはさまざまな変数の使い方などを理解するのが難しいが、慣れるとMakefileを書く必要がなく、ソースファイルをディレクトリごとに把握できて、保守性が高い。XOrg Serverのソースツリーなどを見ていると、各ディレクトリにそのディレクトリの中にあるソースファイルの一覧のような内容を記したMakefile.amがある。それらについての詳細は、以下のページを参照のこと。たくさんの必要なファイルとたくさんの必要な入力・実行作業があって最初は戸惑うかもしれない。
Automakeでは、ディレクトリ階層ごと(それぞれのサブディレクトリごと)にMakefile.amを配置し、プログラムバイナリ名やソースファイル名を記述する。
autoscanコマンドを実行してスキャンし、雛型のconfigure.scanを自動的に吐き出して、そのファイル名をconfigure.acに変更し、編集する。
autoheaderとaclocalを実行して、config.h.in(config.hの雛型)やaclocal.m4を吐き出す。
automakeを実行して、Makefile.inを吐き出す。
最後にautoconfを実行して、configureスクリプトを吐き出す。
またlibtoolを使うことで共有ライブラリの移植性を高められる。なんとWindowsのDLLにすら対応可能である。
詳しくは以下のページを参照のこと。
CMakeも参照のこと。
以下の書籍が参考になります。
移植性も参照のこと。
Makeを参照のこと。
ソースからのインストールを参照のこと。
Autotools