makefile.amの作成

ビルドの指定

前節の構文を踏まえ、サンプルアプリケーション用のmakefile.amを作成していきます。まず、アプリケーションのインストール先は通常のbindirを指定します。もちろんコンパイルが必要なのでプライマリはPROGRAMSになります。そして、ターゲットのソースプログラムをSOURCES接尾辞で指定します。

bin_PROGRAMS=sample
sample_SOURCES=mysqlbase.cpp tblsample.cpp \
  main.cpp mysqlbase.h  tblsample.h

ヘッダファイルの指定

アプリケーションでは利用するライブラリ用のヘッダとしてmysql.hおよびccsv.hのをインクルードしています。これらはカレントディレクトリには存在しませんのでパスをコンパイラに指示する必要があります。

ここで使用するのがconfigureスクリプトの出力した変数となります。当コンテンツの例では、configure.acにAC_SUBSTマクロを用いて

を定義しました。これらのうちmysql.hへのパスはシェル変数$(MYSQL_INCLUDE)で、ccsv.hへのパスは$(LIBCSV)のシェル変数で参照できようになりますので、接尾辞CXXFLGSに指定してコンパイルオプションを作成します。

sample_CXXFLAGS=$(MYSQL_INCLUDE) -I$(LIBCSV)

ライブラリのリンク

ライブラリへのリンクも同様となります。リンクするMySQLおよびcsvライブラリ用のオプションを追加するためconfigureスクリプトで設定した変数を参照します。(libcsvライブラリはアプリケーション同梱のライブラリのためパスだけを変数より取得しライブラリ名は直接指定しています。)

sample_LDADD=$(MYSQL_LIBS) -L$(LIBCSV) -lcsv

これで、makefile.amの作成はとりあえず一区切りとします。ここまでの作業で作成したmakefile.amは以下のようになります。完成でないとはいえ、ずいぶんと少ない記述で済んだことが実感できるかと思います。

# package build & link
bin_PROGRAMS=sample
sample_SOURCES=mysqlbase.cpp tblsample.cpp \
  main.cpp mysqlbase.h  tblsample.h
sample_CXXFLAGS=$(MYSQL_INCLUDE) -I$(LIBCSV)
sample_LDADD=$(MYSQL_LIBS) -L$(LIBCSV) -lcsv

また、automakeの概要のところでconfigureスクリプトで生成した変数にアクセスするには@VARIABLE@を使用すると説明しましたが、上記の例では$(MYSQL_INCLUDE)のように直接シェル変数として記述しています。このことに関しては次項で記述します。