autotools - Gakgu/Gakgu.github.io GitHub Wiki
개요
Makefile을 만들 수 있게 도와주는 GNU build system.
구성
- automake
- autoconf
- libtool
- 기타 보조 도구 :
- autoscan
- aclocal
- autoheader
사용법
-
Makefile.am 작성 :
프로젝트 디렉토리에서 Makefile.am을 작성한다.$ vim project_dir/Makefile.am $ vim project_dir/src/Makefile.am $ ......
-
configure.ac 작성 :
configure.ac를 작성한다.$ autoscan $ mv configure.scan configure.ac $ vim configure.ac
-
configure 생성 :
아래에서 libtoolize는 공유 라이브러리가 있을 때에만 사용한다.$ aclocal $ autoheader $ libtoolize --automake --copy --force $ autoconf $ automake --foreign --add-missing --copy
-
설치
- automake 옵션 :
-
--foreign :
기타 표준 문서들을 작성하지 않아도 된다. -
--add-missing :
누락된 표준 패키지 파일을 추가시켜준다. -
--copy :
--add-missing과 함께 사용되며 누락된 표준 패키지 파일을 복사한다. 기본은 심볼릭 링크이다.
-
-
설치
다음 명령어로 프로젝트를 설치한다.$ ./configure $ make $ make install
- configure 옵션 :
- --prefix=_DIRECTORY_ :
지정한 디렉토리에 설치한다.
- --prefix=_DIRECTORY_ :
Makefile.am 문법
최상위 디렉토리의 Makefile.am
- SUBDIRS = dir1 dir2 ... :
지정한 디렉토리에서 Makefile.am 조사한다.
소스 디렉토리의 Makefile.am
-
bin_PROGRAMS = target :
생성할 binary 파일의 이름을 정한다. -
target\SOURCES = main.cpp src.cpp ...
컴파일할 소스들을 지정한다.
라이브러리 디렉토리의 Makefile.am
-
lib_LIBRARIES = libXXX.a :
생성할 정적 라이브러리를 지정한다. -
libXXX_a_SOURCES = source1 source2 :
정적 라이브러리를 구성할 소스를 지정한다. -
lib_LTLIBRARIES = libXXX.la
생성할 공유 라이브러리를 지정한다. -
libXXX_la_SOURCES = source1 source2 :
공유 라이브러리를 구성할 소스를 지정한다.
공통 Makefile.am 문법
-
target_CFLAGS = -W -Wall :
gcc flags를 추가한다. -
target_CPPFLAGS = -W -Wall :
g++ flags를 추가한다. -
target_LDADD = $(top_builddir)/lib/libXXX.X :
라이브러리를 추가한다.
configure.ac 문법
-
AC_INIT(target, version, e-mail) :
반드시 기입해야 하는 기본 정보이다. -
AM_INIT_AUTOMAKE :
automake를 사용한다. -
AC_PROG_CC :
gcc가 있는지 확인한다. -
AC_PROG_CXX :
g++이 있는지 확인한다. -
AC_PROG_RANLIB :
ranlib가 있는지 확인한다. 정적 라이브러리를 만들 때 필요하다. -
AC_PROG_LIBTOOL :
libtool이 있는지 확인한다. 공유 라이브러리를 만들 때 필요하다.