automakeの小ネタ

突然気温が高くなったり低くなったりするのはやめてください本当に。

今日はautomakeでのネタです。多分色んなとこに同様の記述があるとも思いますけれど、メモとして残しておきます。

一応automakeの説明を。autoconfとかと一緒に使って、最近のオープンソースで当たりまえになっている、

./configure
make
make install

という流れを簡単に作成するためのツールです。詳しくは他のサイト様を探して頂ければ幾らでも見つかるかと思います。

で、これで作成したMakefileには、基本的なオプションしか設定されていません。
私は自分で作成するときには必ず-Wallをgccに指定するようにしていまして、これが無いと不安になります。
しかし、Makefile.amにソースを追加したりすると、configureが自動的に走ってMakefileを作り変えてしまうため、
Makefileを手作業で直してもどうにもなりません。

じゃあどうするかというと、Makefile.amの中に、次のように記述します。

AM_CPPFLAGS = -Wall

こうすると、作成されたMakefileのCPPFLAGSにこれが設定されるようになります。
ちなみにこれ関係には、

AM_CPPFLAGS -- CPPFLAGS
    AM_CFLAGS -- CFLAGS
    AM_CXXFLAGS -- CXXFLAGS

とかがあります。他にも一杯ありますが私が使わないもので。

ちなみにこのAM_CPPFLAGSとかのMakefile.amの内部に記述する変数は、そのMakefile.amから作成されるMakefileにだけ有効です。
複数のMakefile.amがあったとしたら、その数だけ記述しないと反映されません。
・・・もし反映する方法があったら教えてください。

一つのMakefileから複数のモジュールをコンパイルするときに、別々のオプションを渡したい時には、この変数を上書きする方法がちゃんとあります。

それは、Makefile.am中で、<プログラム名>_SOURCE = ... とかしますが、同様に<プログラム名>_CPPFLAGS = ... とすると、AM_CPPFLAGSで指定されている
値を上書きすることができます。

どうでもいいんですが、一々必要なソースをMakefile.amに全部記述しなければならないのだけは何とかならないんでしょうか。
これだけなんとかなれば便利なんですけどねー。