▣ 원문 출처: http://funkylocker.tistory.com/entry/autotools-automake-autoconf-사용법
auttotools 란 코드의 빌드를 관리해 주는 툴로 automake와 autoconf 등 (aclocal, autoscan...) 으로
구성되며, 간단한 프로그램에서 큰 규모의 프로젝트의 소스코드를 간편하게 빌드할 수 있도록 Makefile을 제공하는데에 목적을 두고
있습니다.
(사실 컴포넌트가 몇개 되지 않는 프로그램의 경우는 Makefile을 직접 만드는 경우도 좋겠죠. 하지만 왠지 이렇게
만들어 놓으면 프로그램이 폼난다는.. ^^;;;)
일반적으로 autotools를 이용해서 Makefile을 생성하기 위해서는
Makefile.am과 configure.ac (or configure.in) 이 필요합니다. 확장자 am과 ac에서 알 수 있듯이
automake와 autoconf 의 입력 데이터로 사용됩니다.
Makefile.am은 configure 과정을 통해
Makefile.in 을 생성하고, 최종적으로 Makefile 을 생성하게 됩니다. 프로그램
동작에 대한 구조는 automake,
autoconf 의 홈페이지나 이승윤 님이 작성하신 AUTOTOOLS Howto (http://wiki.kldp.org/wiki.php/DocbookSgml/Autotools-KLDP)
를 참고하시면 좋으실 것 같습니다.
그러면 이제 autotools 로 간단한 프로그램을 빌드 해보도록
하겠습니다.
[소스 트리]
$ tree
.
|-- Makefile
|--
Makefile.am
|-- Makefile.in
|-- README
|-- TAGS
|-- aclocal.m4
|--
autom4te.cache
| |-- output.0
| |-- output.1
| |--
output.2
| |-- requests
| |-- traces.0
| |-- traces.1
| `--
traces.2
|-- autoscan.log
|-- config.guess
|-- config.h
|--
config.h.in
|-- config.log
|-- config.status
|-- config.sub
|--
configure
|-- configure.ac
|--
default.mk
|-- depcomp
|-- include
| |--
common.h
| |-- sub.h
| `-- sum.h
|--
install-sh
|-- libtool
|-- ltmain.sh
|-- missing
|-- src
| |--
Makefile
| |--
Makefile.am
| |-- Makefile.in
| |-- main.c
| |-- sum.c
| `--
sub.c
`-- stamp-h1 |
해당 트리에서 유저가
만들어야 하는 파일은 위에 빨간색으로 표시된 것입니다. 이중 소스코드도 당연히 유저 몫입니다.
그럼 Makefile.am 을 먼저
살펴보도록 하겠습니다.
[Makefile.am]
[src/Makefile.am]
bin_PROGRAMS = calulator
test_SOURCES = main.c
\
sum.c \
sub.c |
configure.ac는 기본 폼을 자동으로 만들어주는 autoscan을
이용하도록 합니다. 해당 툴을 이용하면 기본적인 체크 부분에 대한 매크로가 생성됩니다.
[autoscan]
$ autoscan
$ cat
configure.scan |
configure.scan 파일이 생성되면 해당
파일을 에디터로 열어 수정해준뒤 configure.ac로 변경하시면 됩니다. 저는 별도로 추가적인 체크 내용은 넣지 않도록
하겠습니다.
[configure.scan]
# -*- Autoconf -*-
# Process
this file with autoconf to produce a configure script.
AC_PREREQ([2.63])
# 변경
#
AC_INIT([FULL-PACKAGE-NAME], [VERSION],
[BUG-REPORT-ADDRESS])
AC_INIT([calculator], [0.0.1],
[calculator@test.com])
# 꼭 추가
(Makefile 생성)
AM_INIT_AUTOMAKE([-Wall -Werror
foreign])
AC_CONFIG_SRCDIR([src/main.c])
AC_CONFIG_HEADERS([config.h])
# Checks for programs.
AC_PROG_CC
# Checks for libraries.
# FIXME: Replace `main' with a function in
`-lc':
AC_CHECK_LIB([c], [main])
# Checks for header files.
# Checks for typedefs, structures, and compiler characteristics.
# Checks for library functions.
AC_CONFIG_FILES([Makefile
src/Makefile])
AC_OUTPUT
|
[파일명 변경]
$ mv configure.scan
configure.ac |
configure.ac 파일 작성이 완료 되었으면 이제
configure.ac 와 Makefile.am 파일을 바탕으로 configure 파일을 생성하도록 합니다.
[configure
생성]
이후 동작은
일반적인 설치 과정과 동일합니다.
[컴파일]
$ ./configure --prefix=/usr/local/calculator
$ make
$ make
install |