Makefile.amの編集

Makefile.amとは

Makefile.amとは、automakeコマンドがmakefile.inを生成するためのテンプレートとなります。

Makefile.amはプロジェクト中のコンパイルを行う各ディレクトリ毎に配置する必要があります。


Makefile.amの書き方

ターゲット(プログラムやライブラリなどの生成ファイル)を指定する。

ディレクトリでビルドされるターゲットのファイル名を指定します。

ターゲット名が「.」などを含む場合には「_」(アンダーバー)と表記します。

ターゲット名は複数指定が可能です。複数ある場合はスペース区切りで列挙します。


接頭辞の「bin」や「lib」というのは、基本的にはmake installとするとインストールされるディレクトリ名となります。

インストールされたくないものの場合は「noinst_PROGRAMS」のようにします。


コンパイルによって生成されるプログラム(バイナリ)ファイルの指定は下記の形式です。


bin_PROGRAMS = ターゲット

コンパイルによって生成されるライブラリファイルの指定は下記の形式です。


lib_LIBRARIES = ターゲット

libtoolを使う場合のライブラリファイルの指定は下記の形式です。


lib_LTLIBRARIES = ターゲット

マニュアルの指定は下記の形式です。


man_MANS = ターゲット.1

ターゲットへの依存ファイルを指定する。

ターゲットにはビルドするのに必要なファイルを記述します。

ターゲット名は複数指定が可能です。複数ある場合はスペース区切りで列挙します。

ターゲットを生成する元となるソースファイルの指定は以下の通りです。


ターゲット_SOURCES = ソースファイル

ターゲットを生成する元となるライブラリの指定は以下の通りです。


ターゲット_LDADD = ライブラリ

ターゲットを生成する元となるオブジェクトの指定は以下の通りです。


ターゲット_LIBADD = オブジェクト

ターゲットを生成時のコンパイラオプションの指定は以下の通りです。


ターゲット_CFLAGS = Cコンパイラのオプション
ターゲット_CPPFLAGS = C++コンパイラのオプション

ターゲットを生成時のリンカオプションの指定は以下の通りです。


ターゲット_LDFLAGS = オブジェクト

サブディレクトリを指定する。

ターゲット名にサブディレクトリを指定します。

ターゲット名は複数指定が可能です。複数ある場合はスペース区切りで列挙します。


SUBDIRS = ターゲット

Makefile.amサンプル

トップディレクトリのMakefile.am


SUBDIRS = src

ソースコードディレクトリのMakefile.am


#
#  Makefile.am for src
#
bin_PROGRAMS = ein zwei

ein_SOURCES =first.c common.h third.c
zwei_SOURCES =second.c common.h third.c


関連ページ