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
#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
SUBDIRS = src
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