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์ด ์๋์ง ํ์ธํ๋ค. ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ง๋ค ๋ ํ์ํ๋ค.