autoconf automake

automake は,バージョンの違いに敏感.
ここでは version 1.9 についてメモしておく.


# automake --version
automake (GNU automake) 1.9.4



参考
http://www.02.246.ne.jp/~torutk/cxx/automake/automake.html
http://www.ogis-ri.co.jp/otc/hiroba/technical/CppUnit/chapter3.html


ホームディレクトリ($HOME, ~/, /home/hoge)直下に,
次のような prog ディレクトリを作り,
gradius という名のプロジェクトを作っているとする.


prog/
|- gradius/
| |- Makefile.am
| |- configure.in
| |- src/
| |- Gradius.cpp
|- shooting/
|- Makefile.am
|- missile.h


prog/gradius/src/Gradius.cpp

#include <iostream>
#include <shooting/missile.h>

int main(){
    printf("Hello Universe ! \n");
    return 0;
}
$ cd ~/prog/gradius
$ autoscan   (configure.in のひな形を作ってもらう) 
$ cp configure.scan configure.in
$ emacs configure.in 

として,configure.in を編集.
また,Makefile.am も用意する.


prog/gradius/configure.in

#                                               -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.

AC_PREREQ(2.59)
AC_INIT(gradius, 0.1.0, bug-report@hoge.com)     <--変更
AC_CONFIG_SRCDIR([src/Gradius.cpp])              <--変更
AC_CONFIG_HEADER([config.h])                     
AM_INIT_AUTOMAKE                                 <--追加

# Checks for programs.
AC_PROG_CXX

# Checks for libraries.

# Checks for header files.
AC_HEADER_STDC
AC_CHECK_HEADERS([stdlib.h])

# Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST
AC_C_INLINE

# Checks for library functions.
AC_CONFIG_FILES([Makefile
	src/Makefile])
AC_OUTPUT


prog/gradius/Makefile.am


SUBDIRS = src


prog/gradius/src/Makefile.am


bin_PROGRAMS = gradius
myPROG = ${HOME}/prog
INCLUDES = -I${myPROG} -I${myPROG}/gradius/src
gradius_SOURCES = Gradius.cpp

※補足:ライブラリを使うときは,次のようなものを Makefile.am に付け足しておく.


INCLUDES = -I/usr/X11R6/include
gradius_LDFLABS = -framework vecLib -L/usr/X11R6/lib
gradius_LDADD = libika.a -ltako


~/prog/gradius で,

$ touch INSTALL NEWS README COPYING AUTHORS ChangeLog  // GNU風配布パッケージに必要なファイルを作成(空ファイル)
$ autoheader    // configure.in がないと,no input file と返される
$ aclocal
$ automake --add-missing --copy
$ autoconf
$ ./configure
$ make
$ ./src/gradius