Go to the first, previous, next, last section, table of contents.


¸î¸î ¿¹Á¦ ÆÐÅ°Áö

°£´ÜÇÑ ¿¹Á¦, ½ÃÀÛºÎÅÍ ³¡±îÁö

´ç½ÅÀÇ ¸Ó¸®°¡ ¼Ò¿ëµ¹ÀÌ¿¡¼­ ¼Ò¿ëµ¹ÀÌ »çÀÌ·Î ¶°´Ù´Ï°Ô ÇÏ´Â ÇÁ·Î±×·¥ÀÎ, zardozÀÇ ÀÛ¼ºÀ» ³¡³Â´Ù°í °¡Á¤ÇÏÀÚ. ȣȯ¼º ³ôÀº ±¸Á¶¸¦ À§ÇØ autoconf¸¦ »ç¿ëÇßÁö¸¸ `Makefile.in' ÆÄÀϵéÀº ÀÓ±âÀÀº¯À¸·Î ¸¸µé¾ú´Ù. ÀÌ ÆÄÀϵéÀ» Æ°Æ°ÇÏ°Ô Çϱâ À§Çؼ­, automake·Î ´«À» µ¹·È´Ù.

ù¹ø°·Î ÇÒ ÀÏÀº, `configure.in'¿¡ automake°¡ ÇÊ¿ä·Î ÇÏ´Â ¸í·ÉÀ» Æ÷ÇÔ½ÃÅ°´Â °ÍÀÌ´Ù. °¡Àå °£´ÜÇÑ ¹æ¹ýÀº AC_INIT ¹Ù·Î ´ÙÀ½¿¡ AM_INIT_AUTOMAKE¸¦ Ãß°¡ÇÏ´Â °ÍÀÌ´Ù.

AM_INIT_AUTOMAKE(zardoz, 1.0)

ÀÌ ÇÁ·Î±×·¥Àº ¾î¶² º¹ÀâÇÑ ¿ä¼Òµµ ¾ø±â ¶§¹®¿¡ (¿¹¸¦ µé¾î, gettext¸¦ »ç¿ëÇÏÁöµµ ¾Ê°í, µ¿Àû ¶óÀ̺귯¸®¸¦ ¸¸µé·Á°í ÇÏÁöµµ ¾Ê´Â´Ù), ÀÌ ºÎºÐÀº ³¡¸¶ÃÆ´Ù. ¾ÆÁÖ ½±´Ù!

ÀÌÁ¦ `configure'¸¦ ´Ù½Ã ¸¸µé¾î¾ß ÇÑ´Ù. ÇÏÁö¸¸ ÀÌ ÀÏÀ» ÇÏ·Á¸é, autoconf¿¡°Ô ´ç½ÅÀÌ »ç¿ëÁßÀÎ »õ·Î¿î ¸ÅÅ©·Î°¡ ¾îµðÀÖ´ÂÁö ¾Ë·ÁÁà¾ß ÇÑ´Ù. °¡Àå ½¬¿î ¹æ¹ýÀº aclocal ÇÁ·Î±×·¥À» »ç¿ëÇؼ­ `aclocal.m4' ÆÄÀÏÀ» ¸¸µå´Â °ÍÀÌ´Ù. ÇÏÁö¸¸ ¾ÆÁ÷... ÀÌ ÇÁ·Î±×·¥À» À§Çؼ­ ÀÌ¹Ì ¸î°³ÀÇ ¸ÅÅ©·Î¸¦ ¾î·Æ°Ô ÀÛ¼ºÇؼ­, ÀÌ¹Ì `aclocal.m4' ÆÄÀÏÀ» °¡Áö°í ÀÖÀ» ¼öµµ ÀÖ´Ù. aclocal¿¡¼­´Â ¼Õ¼ö ÀÛ¼ºÇÑ ¸ÅÅ©·Î¸¦ `acinclude.m4'¿¡ ³ÖÀ» ¼ö ÀÖ´Ù. ±×·¡¼­, ´ÜÁö À̸§À» ¹Ù²Ù°í ½ÇÇàÇÏ¸é µÈ´Ù:

mv aclocal.m4 acinclude.m4
aclocal
autoconf

ÀÌÁ¦ zardoz¸¦ À§ÇÑ `Makefile.am'À» ÀÛ¼ºÇØ¾ß ÇÒ ¶§´Ù. zardoz´Â »ç¿ëÀÚ ÇÁ·Î±×·¥À̱⠶§¹®¿¡, ³ª¸ÓÁö ´Ù¸¥ »ç¿ëÀÚ ÇÁ·Î±×·¥ÀÌ ÀÖ´Â µð·ºÅ丮¿¡ ¼³Ä¡ÇÏ°í ½Í´Ù. ¶Ç zardoz´Â Texinfo ¹®¼­µµ °¡Áö°í ÀÖ´Ù. `configure.in' ½ºÅ©¸³Æ®¿¡¼­´Â AC_REPLACE_FUNCS¸¦ »ç¿ëÇϱ⠶§¹®¿¡, `@LIBOBJS@'¿Í ¸µÅ©ÇØ¾ß ÇÑ´Ù. Áï ´ÙÀ½°ú °°ÀÌ ÀÛ¼ºÇØ¾ß ÇÑ´Ù:

bin_PROGRAMS = zardoz
zardoz_SOURCES = main.c head.c float.c vortex9.c gun.c
zardoz_LDADD = @LIBOBJS@

info_TEXINFOS = zardoz.texi

ÀÌÁ¦ automake --add-missingÀ» ½ÇÇàÇϸé, `Makefile.in'À» ¸¸µé°í, ÇÊ¿äÇÑ ¸î¸î º¸Á¶ ÆÄÀϵéÀ» °¡Á®¿Â´Ù. ±×¸®°í ´ç½ÅÀº Çس´Ù!

ÀüÅëÀû ÇÁ·Î±×·¥

GNU hello´Â ±× ÀüÅëÀûÀÎ °£´ÜÇÔ°ú À¶Å뼺¶§¹®¿¡ À¯¸íÇÏ´Ù. ÀÌ ÀýÀº Automake°¡ GNU Hello ÆÐÅ°Áö¿¡ ¾î¶»°Ô »ç¿ëµÉ ¼ö ÀÖ´ÂÁö ¼³¸íÁØ´Ù. ¾Æ·¡ÀÇ ¿¹´Â °¡Àå ÃÖ½ÅÀÇ GNU Hello¿¡¼­ ¿Â °ÍÀÌÁö¸¸, ÀúÀ۱ǿ¡ °üÇÑ ¾ð±Þ°ú °°ÀÌ ¸ÞÀÎÅ×À̳ʿ¡°Ô¸¸ ÇÊ¿äÇÑ ÄÚµå´Â ÀüºÎ »°´Ù.

¹°·Ð, GNU Hello´Â ¼Ò½º°¡ µÎÁÙ¹Û¿¡ ¾È µÇ´Â ÀüÅëÀûÀÎ Helloº¸´Ù ÈξÀ ´õ ±â´ÉÀÌ ¸¹´Ù. GNU Hello´Â ±¹Á¦È­ µÇ¾î ÀÖ°í, ¿É¼ÇÀ» ó¸®ÇÏ°í, ¸Å´º¾ó°ú Å×½ºÆ® ¸ðÀ½ÀÌ µé¾î ÀÖ´Ù. GNU Hello´Â deep ÆÐÅ°ÁöÀÌ´Ù.

¿©±â¿¡ GNU HelloÀÇ `configure.in'ÀÌ ÀÖ´Ù:

dnl Process this file with autoconf to produce a configure script.
AC_INIT(src/hello.c)
AM_INIT_AUTOMAKE(hello, 1.3.11)
AM_CONFIG_HEADER(config.h)

dnl Set of available languages.
ALL_LINGUAS="de fr es ko nl no pl pt sl sv"

dnl Checks for programs.
AC_PROG_CC
AC_ISC_POSIX

dnl Checks for libraries.

dnl Checks for header files.
AC_STDC_HEADERS
AC_HAVE_HEADERS(string.h fcntl.h sys/file.h sys/param.h)

dnl Checks for library functions.
AC_FUNC_ALLOCA

dnl Check for st_blksize in struct stat
AC_ST_BLKSIZE

dnl internationalization macros
AM_GNU_GETTEXT
AC_OUTPUT([Makefile doc/Makefile intl/Makefile po/Makefile.in \
           src/Makefile tests/Makefile tests/hello],
   [chmod +x tests/hello])

`AM_' ¸ÅÅ©·ÎµéÀº Automake°¡ (ȤÀº Gettext ¶óÀ̺귯¸®°¡) Á¦°øÇÏ´Â °ÍÀÌ´Ù; ³ª¸ÓÁö´Â Ç¥ÁØ Autoconf ¸ÅÅ©·ÎÀÌ´Ù.

°¡Àå À­ µð·ºÅ丮¿¡ ÀÖ´Â `Makefile.am'Àº:

EXTRA_DIST = BUGS ChangeLog.O
SUBDIRS = doc intl po src tests

º¸½Ã´Ù½ÃÇÇ, ½ÇÁ¦ ÀÛ¾÷Àº ¼­ºêµð·ºÅ丮¿¡¼­ ÀϾ´Ù.

`po'¿Í `intl' µð·ºÅ丮´Â gettextize¸¦ ½á¼­ ÀÚµ¿À¸·Î ¸¸µé¾î Áø´Ù: ÀÌ°Í¿¡ ´ëÇؼ­´Â ¿©±â¼­ ¼³¸íÇÏÁö ¾Ê´Â´Ù.

`doc/Makefile.am'¿¡¼­´Â:

info_TEXINFOS = hello.texi
hello_TEXINFOS = gpl.texi

À̰͸¸ ÀÖÀ¸¸é ÃæºÐÈ÷ GNU Hello ¸Å´º¾óÀ» ¸¸µé°í, ¼³Ä¡ÇÏ°í, ±×¸®°í ¹èÆ÷ÇÏ´Â µ¥ ÃæºÐÇÏ´Ù.

´ÙÀ½Àº `tests/Makefile.am'ÀÌ´Ù:

TESTS = hello
EXTRA_DIST = hello.in testdata

`hello' ½ºÅ©¸³Æ®´Â configure°¡ ¸¸µé¾î ³½´Ù. ±×¸®°í ÀÌ ½ºÅ©¸³Æ®´Â À¯ÀÏÇÑ Å×½ºÆ®ÄÉÀ̽ºÀÌ´Ù. make check°¡ ÀÌ Å×½ºÆ®¸¦ ½ÇÇàÇÒ °ÍÀÌ´Ù.

½ÇÁ¦·Î ¸ðµç ÀÛ¾÷ÀÌ ÀϾ´Â `src/Makefile.am'À» º¸ÀÚ:

bin_PROGRAMS = hello
hello_SOURCES = hello.c version.c getopt.c getopt1.c getopt.h system.h 
hello_LDADD = @INTLLIBS@ @ALLOCA@
localedir = $(datadir)/locale
INCLUDES = -I../intl -DLOCALEDIR=\"$(localedir)\"

Building etags and ctags

¿©±â¿¡ ¶Ç´Ù¸¥, Æ®¸¯ÀÌ ´õ ¸¹ÀÌ »ç¿ëµÈ ¿¹Á¦°¡ ÀÖ´Ù. ÀÌ ¿¹Á¦¿¡¼­´Â °°Àº ¼Ò½º ÆÄÀÏ(`etags.c')¿¡¼­ ¾î¶»°Ô µÎ°³ÀÇ ÇÁ·Î±×·¥(ctags¿Í etags)À» ¸¸µé¾î ³¾ ¼ö ÀÖ´ÂÁö ¾Ë¼ö ÀÖ´Ù. ¿©±â¼­ ¾î·Á¿î ºÎºÐÀº `etags.c'¸¦ °¢°¢ ÄÄÆÄÀÏÇÒ¶§ ´Ù¸¥ cpp ¿É¼ÇÀÌ ÇÊ¿äÇÏ´Ù´Â °ÍÀÌ´Ù.

bin_PROGRAMS = etags ctags
ctags_SOURCES =
ctags_LDADD = ctags.o

etags.o: etags.c
        $(COMPILE) -DETAGS_REGEXPS -c etags.c

ctags.o: etags.c
        $(COMPILE) -DCTAGS -o ctags.o -c etags.c

ctags_SOURCES´Â °ªÀÌ ¾ø´Â º¯¼ö·Î Á¤Àǵȴٴ °Í¿¡ À¯ÀÇÇÏÀÚ---ÀÌ·¸°Ô Çϸé ÀÌ º¯¼öÀÇ °ªÀ¸·Î ¾î¶² ³»Æ÷ÀûÀÎ °ªÀÌ »ç¿ëµÇÁö ¾Ê´Â´Ù. ÇÏÁö¸¸, `etags.o'¿¡¼­ etags¸¦ ¸¸µå´Â °ÍÀº ³»Æ÷ÀûÀÎ ±ÔÄ¢ÀÌ´Ù.

¸µÅ© ¸í·É¿¡ `ctags.o'°¡ µé¾î°¡µµ·Ï Çϱâ À§ÇØ ctags_LDADD°¡ ¾²ÀδÙ. ÇÑÆí ctags_DEPENDENCIES´Â Automake·Î ¸¸µé¾îÁø´Ù.

¸¸¾à ÄÄÆÄÀÏ·¯°¡ `-c'¿Í `-o' ¿É¼ÇÀ» µ¿½Ã¿¡ ¹Þ¾ÆµéÀÏ ¼ö ¾ø´Ù¸é, À§ÀÇ ·ê(rule)Àº µ¿ÀÛÇÏÁö ¾Ê´Â´Ù. ÀÌ°É °£´ÜÈ÷ °íÄ¡´Â ¹æ¹ýÀº °¡Â¥ ÀÇÁ¸¼ºÀ» Çϳª Ãß°¡½ÃÅ°´Â °ÍÀÌ´Ù (º´·ÄÀûÀ¸·Î make ½ÇÇàÇÒ¶§ ¹®Á¦¸¦ ÇÇÇϱâ À§Çؼ­).

etags.o: etags.c ctags.o
        $(COMPILE) -DETAGS_REGEXPS -c etags.c

ctags.o: etags.c
        $(COMPILE) -DCTAGS -c etags.c && mv etags.o ctags.o

¶Ç, ¸¸¾à ANSI C ¹®¹ýÀ» ¾ø¾Ö´Â ±â´ÉÀ» »ç¿ëÇÑ´Ù¸é(see section ÀÚµ¿ ANSI¹®¹ý ¾ø¾Ö±â), ÀÌ ·êÀº µ¿ÀÛÇÏÁö ¾ÊÀ» °ÍÀÌ´Ù; ANSI C ¹®¹ýÀ» ¾ø¾Ö´Â ±â´É±îÁö Áö¿øÇÏ·Á¸é Á¶±Ý ´õ ÀÛ¾÷ÇØ¾ß ÇÑ´Ù:

etags._o: etags._c ctags.o
        $(COMPILE) -DETAGS_REGEXPS -c etags.c

ctags._o: etags._c
        $(COMPILE) -DCTAGS -c etags.c && mv etags._o ctags.o


Go to the first, previous, next, last section, table of contents.