autotools最小構成サンプル
autotools最小構成
ディレクトリにひとつのソースコードのみ存在するプロジェクト環境でのautotoolsの構築例を記述します。
対象プロジェクト
対象プロジェクトは以下の構成となっています。
sample
└── main.c
サンプルソースコードmain.cには以下の内容を記載しています。
#include <stdio.h>
int
main( int argc, char *argv[] )
{
fprintf( stdout, "%s:%s(%d)\n", __FILE__, __FUNCTION__, __LINE__ );
return( 0 );
}
構築手順
1. Makefile.amの作成
$ touch Makefile.am
$ tree
.
├── Makefile.am
└── main.c
Makefile.amに生成するバイナリファイル名とソースコードを記述します。
内容は下記の通りです。
bin_PROGRAMS = sample
sample_SOURCES = main.c
2. configure.acの作成
autoscanコマンドでconfigure.acのテンプレートを作成します。
$ autoscan
$ mv configure.scan configure.ac
$ tree
.
├── Makefile.am
├── configure.ac
└── main.c
configure.acを編集します。実施事項は下記の2つです。
- AC_INITにパッケージ名とバージョンと連絡先メールアドレスを記述します。
- AM_INIT_AUTOMAKEマクロ(内容はパッケージ名とバージョン)を記述します。
ファイル内容は以下のようになります。
$ cat configure.ac
# -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.
AC_PREREQ([2.68])
AC_INIT([sample], [1.0], [mail@mail])
AM_INIT_AUTOMAKE([sample], [1.0])
AC_CONFIG_SRCDIR([main.c])
AC_CONFIG_HEADERS([config.h])
# Checks for programs.
AC_PROG_CC
# Checks for libraries.
# Checks for header files.
# Checks for typedefs, structures, and compiler characteristics.
# Checks for library functions.
AC_CONFIG_FILES([Makefile])
AC_OUTPUT
3. autotoolsスクリプトを作成します。
autotools関連コマンドをシェルスクリプトとしてまとめて記述します。
$ touch autotools.sh
$ chmod 755 autotools.sh
$ tree
.
├── Makefile.am
├── autotools.sh
├── configure.ac
└── main.c
内容は下記の通りです。
$ cat autotools.sh
#!/bin/sh
touch INSTALL NEWS README COPYING AUTHORS ChangeLog
autoheader
aclocal
automake --add-missing --copy
autoconf
4. コンパイル実行
ソースコードをコンパイルしてバイナリを作成します。
$ ./autotools.sh
$ ./configure
$ make
以上で実行ファイル「sample」が生成されます。
$ ./sample
main.c:main(6)