configure を作ってみる

configure を作ってみたので内容をメモしておきます。以下の Web ページを参考に見よう見まねでやってみました。

・初心者への GNU autoconf のススメ
http://sharl.haun.org/autoconf.html


1.ソースを用意する


configure 作ることが目的なので以下のように簡単な感じで。
■ test.c

#include <stdio.h>

void main(int argc, char *argv[])
{
  int i;
  for(i = 1; i < argc; i++) {
    printf("%s\n", argv[i]);
  }
}


2.makefile.in を作成する


touch コマンドでひとまず空の makefile.in を作成する。

# touch makefile.in


3.configure.in を作成する


autoscan を実行して作成された configure.scan を元に configure.in を作成する。

# autoscan
# cp configure.scan configure.in


4.configure を作成する


autoconf を実行して configure を作成する

# autoconf


5.makefile.in を修正する


上述の Web ページを参考に test.c をコンパイルするための makefile.in を作成する
makefile.in

CC = @CC@

SRCS = test.c
PROG = test

all: $(PROG)

$(PROG): $(SRCS)
        $(CC) -o $(PROG) $(SRCS)


6.configure を実行する


configure を実行すると makefile が作成される。

# ./configure 
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables... 
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
configure: creating ./config.status
config.status: creating makefile
config.status: error: cannot find input file: config.h.in
# ls
autom4te.cache  autoscan.log  config.log  config.status  configure  configure.in  configure.scan  makefile  makefile.in  test.c


作成された makefile の内容は以下。@CC@ としていた箇所が gcc に置き換わっている。

# cat makefile
CC = gcc

SRCS = test.c
PROG = test

all: $(PROG)

$(PROG): $(SRCS)
        $(CC) -o $(PROG) $(SRCS)


make コマンドを実行すると test が作成される。

# make
gcc -o test test.c
# ls
autom4te.cache  autoscan.log  config.log  config.status  configure  configure.in  configure.scan  makefile  makefile.in  test  test.c


うん、無事動いてそう。

# ./test a b c
a
b
c


簡単ですが以上です。

[ 環境情報 ]
CentOS 6.2
GCC 4.4.7
Autoconf 2.63