¡º¸®´ª½º Çдç-¸®´ª½º °­Á / ¿¬Àç (go LINUX)¡» 333¹ø Á¦ ¸ñ:GNUtic -- Autoconf/Automake <1> ¿Ã¸°ÀÌ:onestep (·ùâ±Õ ) 96/10/04 16:10 ÀÐÀ½:2542 °ü·ÃÀÚ·á ¾øÀ½ ----------------------------------------------------------------------------- updated version.. Áö³­¹ø ±ÛÀº ºÎÁ·ÇÔÀÌ ¸¹´Ù°í »ý°¢Çؼ­ °³¼±ÇÑ ±ÛÀÔ´Ï´Ù. Áö³­¹ø ±ÛÀ» º¸½Å ºÐÀ̶ó¸é º° Â÷À̾ø´Â ³»¿ëÀ̶ó »ý°¢µË´Ï´Ù. GNUtic Programming -- Automake, Autoconf, Configure [ÁÖÀÇ] ÀÌ ±ÛÀ» ¾´ »ç¶÷Àº IDÁÖÀÎÀÌ ¾Æ´Ô. IDÁÖÀο¡°Ô Æó¸¦ ³¢Ä¥ ¼ö ¾øÀ¸¹Ç·Î Áú¹® ¸ÞÀÏÀº »ç¾çÇÔ. ²À ¿¬¶ôÀÌ ÇÊ¿äÇÒ¶§´Â ·Î E-mailÀ» Áֽñ⸦.. Prolog ****** GNU ÇÁ·Î±×·¥À» ÄÄÆÄÀÏÇØ º» »ç¶÷À̶ó¸é, ±× °úÁ¤ÀÌ ¾ÆÁÖ °£´ÜÇÑ °ÍÀ» ¾Ë ¼ö ÀÖ´Ù. ±×¸®°í ¾î¶² GNU ÇÁ·Î±×·¥ÀÏÁö¶óµµ ÀνºÅçÇÏ´Â ¹æ¹ýÀº ¶È°°´Ù. ¾î¶² GNU programÀ» ¼³Ä¡ÇÏ°í ½Í´Ù¸é, ÀÏ´Ü source code¸¦ °¡Á®¿Í¼­ ÄÄÆÄÀÏÇϰíÀÚ ÇÏ´Â µð·ºÅ丮¿¡ Ǭ´Ù. automake¸¦ ¼³Ä¡ÇÏ·Á°í ÇÑ´Ù°í °¡Á¤ÇØ º¸ÀÚ. ---------------------------------------- coolie:~# ls -l total 872 drwxr-xr-x 2 root root 1024 Jan 29 1996 Mail drwxr-xr-x 2 root root 1024 Jan 3 1996 News -rw-r--r-- 1 root root 183160 Sep 29 20:17 automake-1.0.tar.gz coolie:~# tar zxvf automake-1.0.tar.gz . . . coolie:~# ls -l total 187 drwxr-xr-x 2 root root 1024 Jan 29 1996 Mail drwxr-xr-x 2 root root 1024 Jan 3 1996 News drwxr-xr-x 3 root root 2048 Jun 8 00:26 automake-1.0 -rw-r--r-- 1 root root 183160 Sep 29 20:17 automake-1.0.tar.gz coolie:~# cd automake-1.0 coolie:~/automake-1.0# ---------------------------------------. ´ÙÀ½ ¼¼¹øÀÇ ¼Ð ¸í·ÉÀ¸·Î ÇØ°áµÈ´Ù. .--------------------------------------- coolie:~/automake-1.0# configure .. oolie:~/automake-1.0# make ... coolie:~/automake-1.0# make install ---------------------------------------- À̰͸¸ ±â¾ïÇϸé GNU ÇÁ·Î±×·¥À» ¼³Ä¡¹æ¹ýÀº ´Ù ¾Ë¾Ò´Ù°í ÇÒ ¼ö ÀÖ´Ù. `configure', `make', ±×¸®°í `make install'ÀÌ´Ù. ÀÌ ¼¼°³¸¸ ±â¾ïÇÏ¸é µÈ´Ù. (±×·¸Áö ¾ÊÀº °æ¿ìµµ ÀÖ´Ù. GCC°°Àº °æ¿ì´Â Çѹø ÄÄÆÄÀÏÇÑ ÈÄ¿¡ ÀÚ±â ÀÚ½ÅÀ» ´Ù½Ã ÄÄÆÄÀÏÇÏ´Â º¹ÀâÇÑ °úÁ¤À» °ÅÄ£´Ù.) ÀÚ, ¾î¶»°Ô ÀÌ·¸°Ô °£´ÜÇÏ°Ô ÇØ°áµÇ´ÂÁö ±Ã±ÝÇÏÁö ¾Ê´Â°¡? ¿©·¯°³ÀÇ ¼­ºêµð·ºÅ丮°¡ ÀÖ°í, C ¼Ò½ºÈ­ÀÏ ¼ö½Ê°³, ±×¿ÜÀÇ ¸ÅÅ©·Î, µ¥ÀÌŸ µîµî °®°¡Áö È­ÀÏÀÌ ¼¯¿© ÀÖ´Â ÆÐŰÁö¿¡¼­ ¾î¶»°Ô ÀÌ·¸°Ô °£´ÜÇÏ°Ô ÀνºÅçÀÌ °¡´ÉÇÒ±î? ¹°·Ð make¶ó´Â ÇʼöÀûÀÎ µµ±¸°¡ Àֱ⠶§¹®¿¡ °¡´ÉÇÑ ÀÏÀÌ´Ù. ÇÏÁö¸¸, make¸¸À¸·Î ÀÌ·¸°Ô ¸¸µé¾îÁø °ÍÀº ¾Æ´Ï´Ù. ¼ö½Ê°³ÀÇ È­Àϵ鰣¿¡ ÀÇÁ¸¼ºÀÌ Ä¿Áö¸é Ä¿Áú¼ö·Ï MakefileÀº ´õ¿í ´õ º¹ÀâÇØÁ®¸¸ °£´Ù. ±×¶§¸¶´Ù ÇϳªÇϳª ¼ÕÀ¸·Î MakefileÀ» °íÄ£´Ù´Â °Ç ¾Ç¸ùÀÌ ¾Æ´Ò ¼ö ¾ø´Ù. ÀÌ ±Û¿¡¼­´Â ¾î¶»°Ô ÀÌ·¸°Ô ÇÒ ¼ö ÀÖ´ÂÁö ¼Ò°³ÇØ º¸°íÀÚ ÇÑ´Ù. ¿©±â¿¡¼­ »ç¿ëµÈ µµ±¸´Â Autoconf¿Í AutomakeÀÌ´Ù. ¹°·Ð ÀÌ ÆÐŰÁö¿¡´Â ÇØ´çµÇ´Â ¸Å´º¾óÀÌ ÀÖ´Ù. ¸Å´º¾óÀº Emacs¿¡¼­ C-h i, ¶Ç´Â `info' ¸í·ÉÀ» ½ÇÇà½ÃÄѼ­ º¼ ¼ö ÀÖ´Ù.(¹°·Ð ±× ÇØ´ç ÆÐŰÁö¸¦ ¼³Ä¡ÇßÀ» °æ¿ì) µé¾î°¡±â Àü¿¡ ÇÊ¿äÇÑ °Í *********************** Linux ½Ã½ºÅÛÀ» °®°í ÀÖ´Ù¸é ´ç¿¬È÷ gcc, make¿Í °°Àº ÇʼöÀûÀÎ °³¹ßµµ±¸´Â ¼³Ä¡µÇ¾î ÀÖÀ» °ÍÀÌ´Ù. ÇÏÁö¸¸, ³Î¸® ¾²ÀÌ´Â Slackware¿¡´Â Æ÷ÇԵǾî ÀÖÁö ¾ÊÀº °³¹ßÀÚ¿¡°Ô´Â ¸Å¿ì Áß¿äÇÑ ÆÐŰÁö°¡ ÀÖ´Ù. autoconf¿Í automake°¡ ±×°ÍÀÌ´Ù. ÀÌ 2°³ ÆÐŰÁö°¡ ¼³Ä¡µÇ¾î ÀÖÁö ¾Ê´Ù¸é ´çÀå ¼³Ä¡ÇÏÀÚ. autoconfÀÇ °æ¿ì¿¡´Â m4 ÆÐŰÁö°¡ ¸ÕÀú ¼³Ä¡µÇ¾î ÀÖ¾î¾ß Çϰí, automake´Â perlÀÌ ¼³Ä¡µÇ¾î ÀÖ¾î¾ß ÇÑ´Ù. ÀÌ 2°³ ÆÐŰÁö´Â m4¿Í perl·Î ¾²¿©Áø ¸ÅÅ©·ÎµéÀÇ ÁýÇÕÀ̱⠶§¹®¿¡ ¼³Ä¡ÇÏ´Â µ¥ ¿À·¡ °É¸®Áöµµ ¾Ê´Â´Ù. ¾î¶»°Ô ¼³Ä¡ÇÏ´À³Ä´Â À§¿¡µµ ³ª¿Í ÀÖ´Ù. `configure', `make' ±×¸®°í `make install'. ÀÌÁ¦ ÀÌ µÎ ÆÐŰÁöÀÇ ÈûÀ» »ç¿ëÇØ º¸±â ¹Ù¶õ´Ù. automake ÆÐŰÁö¿¡´Â µ¥ÀÌŸ°¡ ÀúÀåµÇ¾î ÀÖ´Â µð·ºÅ丮°¡ ÀÖ´Ù. Á÷Á¢ ÄÄÆÄÀÏÇØ¼­ ¼³Ä¡Çß´Ù¸é, /usr/local/share/automake°¡ µÉ °ÍÀÌ´Ù. ÀÌ µð·ºÅ丮¿¡´Â ±× ÇÁ·Î±×·¥ÀÌ »ç¿ëÇÏ´Â ¸ÅÅ©·Î È­Àϵ鵵 µé¾î ÀÖÁö¸¸, ¸î°³´Â °³¹ßÀÚÀÇ ÆíÀǸ¦ À§ÇØ ÇÊ¿äÇÒ¶§¸¶´Ù ÀڱⰡ ¸¸µé°Ô µÇ´Â ÆÐŰÁö¿¡ º¹»çÇØ¼­ ¾µ ¼ö ÀÖ´Â À¯¿ëÇÑ °ÍµéÀÌ ¸¹´Ù. ¹Ø¿¡¼­ ¾î¶² È­ÀÏÀÌ ÇÊ¿äÇÏ´Ù°í ÇÒ ¶§¸¶´Ù ÀÌ µð·ºÅ丮¿¡¼­ ã¾Æº¸ÀÚ. ÈÞ½Ä -- Ç¥ÁØÀ̶õ **************** ÀÌ ±ÛÀÇ Àǵµ´Â °á±¹, `Á»´õ ÆíÇÏ°Ô ÇÁ·Î±×·¥À» °³¹ßÇÒ ¼ö ÀÖµµ·Ï' ÇÏ´Â °ÍÀÌ´Ù. ¿©±â¿¡¼­ ¼Ò°³µÈ µµ±¸¸¦ Àß È°¿ëÇÏ¸é ºÐ¸í ÆíÇÏ°Ô ÀÛ¾÷À» ÇÒ ¼ö ÀÖ´Ù. ÇÏÁö¸¸ ¾ò´Â °ÍÀÌ ÀÖ´Â ¸¸Å­ ÀÒ´Â °Íµµ ÀÖ´Ù. ´ç½ÅÀÇ ÇÁ·Î±×·¡¹Ö ½ºÅ¸ÀÏÀ» ¹Ù²ã¾ß ÇÒ °ÍÀÌ´Ù. ÀÌ ±Û¿¡¼­ Á¦½ÃÇϰíÀÚ ÇÏ´Â °ÍÀº ´ÜÁö °³¹ßµµ±¸ÀÇ »ç¿ë¸¸ÀÌ ¾Æ´Ï´Ù. GNUÀÇ °³¹ßµµ±¸¸¦ Àß È°¿ëÇϱâ À§Çؼ­´Â GNU ÇÁ·Î±×·¥µéÀÌ Á¦½ÃÇϴ ǥÁØÀ» µû¶ó¾ß ÇÑ´Ù. ÀÌ ±ÛÀ» Àо·Á°¡ º¸¸é¼­ °Ç¹æÁö´Ù´Â »ý°¢µµ µé °ÍÀÌ´Ù. ³ª´Â ³» ³ª¸§´ë·Î ÇÁ·Î±×·¡¹ÖÀ» Àß Çϰí ÀÖ´Ù°í »ý°¢Çϴµ¥ ¹½ÇÏ·¯ ÀÌ·¡¶ó Àú·¡¶ó ÇÏ´Â °Ç°¡ÇÏ´Â »ý°¢µµ µé °ÍÀÌ´Ù. ÀÚ, ÀÌ·± »ý°¢Àº ¹ö¸®ÀÚ. ´ç½ÅÀÌ ¸¸µé°í ÀÖ´Â ÇÁ·Î±×·¥ÀÌ ±×³É ¸îÁÙ ²ôÀû°Å¸° ½É½ÉÇ®À̰¡ ¾Æ´Ï¶ó¸é, Á¤¸» ³Î¸® ¾²ÀÌ´Â ÇÁ·Î±×·¥À» ¸¸µé°í ½Í´Ù¸é, ¸çÄ¥ ¸Å´Þ¸®´Ù°¡ Áý¾î´øÁú ÇÁ·Î±×·¥ÀÌ ¾Æ´Ï¶ó ¿À·§µ¿¾È °è¼Ó ¼öÁ¤Çϰí, ¹ßÀü½ÃÄÑ¾ß ÇÒ ÇÁ·Î±×·¥À̶ó¸é º¸ÆíÀûÀΠǥÁØÀ» µû¸§À¸·Î¼­ ¸¹Àº ÀÌÀÍÀ» ¾òÀ» ¼ö ÀÖÀ» °ÍÀÌ´Ù. ÇöÀç Á¢ÇÒ ¼ö ÀÖ´Â °ø½ÄÀûÀÎ, ÃÖ±ÙÀÇ GNU Ç¥ÁØ ¹®¼­´Â ¿ª½Ã `GNU Coding Standards'ÀÌ´Ù. ±Û ¾²´Â ÇöÀç GNU Coding Standards´Â 96³â 6¿ù 10ÀÏ¿¡ updateµÈ °ÍÀ¸·Î µÇ¾î ÀÖ´Ù. ¿©±â ¾²¿© ÀÖ´Â ³»¿ëÀ» öÀúÈ÷ ÁؼöÇØ¾ß ÇÏ´Â °ÍÀº ¹°·ÐÀÌ´Ù. ´Ü, À¯¿ëÇÑ ³»¿ëÀ̱ä ÇÏÁö¸¸, ÀÐÁö ¾Ê¾Æµµ µÇ´Â ºÎºÐÀÌ ÀÖ´Ù. ¹Ù·Î `Makefile Conventions'¶ó´Â ºÎºÐÀ¸·Î, ÀÌ ±Û¿¡¼­ ´Ù·ç°Ô µÉ ºÎºÐÀÌ ¹Ù·Î ±×°ÍÀÌ´Ù. ¿Ö³ÄÇϸé automake¶ó´Â ÃÖ±Ù¿¡ ¸¸µé¾îÁø À¯¿ëÇÑ µµ±¸°¡ Àֱ⠶§¹®ÀÌ´Ù. ¿©·¯ºÐÀº Á÷Á¢ MakefileÀ̳ª Makefile.inÀ» ¼ÕÀ¸·Î ÀÛ¼ºÇÒ ÀÏÀº ¾øÀ» °ÍÀÌ´Ù. Automake ¸Å´º¾ó¿¡ ¾ð±ÞµÈ ¹Ù¿¡ ÀÇÇϸé ÀÌ ºÎºÐÀº °ð ¹Ù²î°Ô µÉ °ÍÀ̶ó°í ÇÑ´Ù. °ð `GNITS'¶ó´Â »õ·Î¿î Ç¥ÁØÀÌ ¼¼¿öÁú °ÍÀ̶ó°í ÇÑ´Ù. ÀÌ ³»¿ëÀº ¾ÆÁ÷Àº ´ú ¿Ï¼ºµÇ¾ú±â ¶§¹®¿¡ ¾Ë ¼ö ¾øÁö¸¸, ÃÖ±Ù¿¡ ¸¸µé¾îÁø automake°¡ Å« ¿ªÇÒÀ» ÇÏ°Ô µÉ °ÍÀÌ ºÐ¸íÇÏ´Ù. º»·Ð **** ÀÌÇØ¸¦ µ½±â À§ÇØ ÇѰ³ÀÇ ÆÐŰÁö¸¦ ¸¸µå´Â °úÁ¤À» »ìÆìº¸ÀÚ. ÀÛ¼ºÇÏ°Ô µÉ ÆÐŰÁö´Â `first'¶ó´Â ÆÐŰÁö·Î óÀ½À¸·Î ¸¸µé°Ô µÈ ÆÐŰÁö¶ó´Â ¶æÀÌ´Ù. ÀÌ ÇÁ·Î±×·¥Àº stdinÀ» Àо, ¿ª¼øÀ¸·Î stdoutÀ¸·Î ³»º¸³»´Â ÇÁ·Î±×·¥ÀÌ´Ù. Àç¹Ì´Â ÀÖÁö¸¸ ¾µ¸ð´Â ¾ø´Ù. °£´ÜÇÏÁö¸¸, ÀϺη¯ 2°³ÀÇ È­ÀÏ·Î ³ª´©°í, GNU ¶óÀ̺귯¸®¸¦ ½á º¼·Á°í ½¬¿î ±æÀ» µ¹¾Æ¼­ ±¸ÇöÇÑ ºÎºÐµµ ÀÖ´Ù. ¿©±â ³ª¿Í ÀÖ´Â ´ë·Î ÆÐŰÁö¸¦ ¸¸µé¾î ³ª°¡¸é ¾î·ÆÁö ¾Ê°Ô ÆÐŰÁö¸¦ ¸¸µé ¼ö ÀÖ´Ù. first´Â °ð ÀÚ·á½Ç¿¡ ¿Ã·ÁÁú °ÍÀÌ´Ù. ÀÌ ÆÐŰÁö´Â ¹ÞÁö ¾Ê¾Æµµ »ó°ü¾ø´Ù. ÀÌ °úÁ¤À» Â÷±ÙÂ÷±Ù µû¶óÇϸé Á¶±×¸¸ ÆÐŰÁö¶óµµ Á÷Á¢ ¸¸µé ¼ö ÀÖÀ» °ÍÀÌ´Ù. "hello, world"°°Àº °£´ÜÇÑ ÇÁ·Î±×·¥ÀÌ¶óµµ ¸¸µé¾î¼­ ÆÐŰÁö¸¦ ¸¸µé¾î º¸ÀÚ. (½ÇÁ¦·Î GNU hello ÆÐŰÁö°¡ ÀÖÁö¸¸, ÀÌ ÆÐŰÁö´Â automake¸¦ »ç¿ëÇÏÁö ¾Ê¾Ò´Ù.) ¸ÕÀú ÇÒÀÏÀº ¹«¾ùÀϱî? ÀÛ¾÷ÇÒ µð·ºÅ丮¸¦ ¸¸µå´Â °ÍÀÌ´Ù. ---------------------------------------- coolie:~$ mkdir first coolie:~$ cd first coolie:~/first$ ls coolie:~/first$ ---------------------------------------- ¿©·¯ºÐÀÌ ¸¸µé°Ô µÉ ÆÐŰÁö À̸§À¸·Î µð·ºÅ丮¸¦ ¸¸µé¸é µÈ´Ù. ¾ÕÀ¸·Î ÀÌ µð·ºÅ丮 ¾È¿¡¼­ °ü·ÃµÈ ¸ðµç ÀÛ¾÷À» ÇÏ°Ô µÉ °ÍÀÌ´Ù. ÀÚ, ÀÌÁ¦ Çϳª¾¿ Çϳª¾¿ ÆÐŰÁö¸¦ ¸¸µé °èȹÀ» ¼¼¿öº¸ÀÚ. issue -- µð·ºÅ丮ÀÇ ¸ð¾ç (depth) ******************************** ÀÌÁ¦ »ý°¢ÇØ º¼ ¹®Á¦°¡ ÀÖ´Ù. `~/first'¶ó´Â µð·ºÅ丮¸¦ ¸¸µé¾ú´Âµ¥ ±× ¹Ø¿¡ ¼­ºê µð·ºÅ丮¸¦ ¸¸µé °ÍÀΰ¡? ¾Æ´Ï¸é ±×³É ÀÌ µð·ºÅ丮 Çϳª¿¡ È­ÀϵéÀ» ³Ö¾îµÑ °ÍÀΰ¡? ´Ù¸¥ GNU ÇÁ·Î±×·¥µéÀº ¾î¶»°Ô ÇØ°áÇß´ÂÁö »ìÆìº¸ÀÚ. ´ÙÀ½Àº fileutils ÆÐŰÁöÀÌ´Ù. ---------------------------------------- coolie:~/fileutils-3.13$ ls -CF ABOUT-NLS Makefile.am acconfig.h doc/ mkinstalldirs* AUTHORS Makefile.in aclocal.m4 install-sh* po/ COPYING NEWS config.h.in intl/ src/ ChangeLog README configure* lib/ stamp-h.in INSTALL TODO configure.in man/ coolie:~/fileutils-3.13$ ---------------------------------------- Âü ±ú²ýÇÑ ±¸Á¶·Î µÇ¾î ÀÖ´Ù. ¸Ç À­ µð·ºÅ丮¿¡´Â README, COPYING, INSTALL°°Àº °£´ÜÇÑ ¹®¼­ È­Àϰú ÀÌ ÆÐŰÁö¸¦ ¼³Ä¡Çϱâ À§ÇÑ È­Àϵ鸸ÀÌ µé¾î ÀÖ´Ù. srcµð·ºÅ丮¿¡´Â C ¼Ò½ºÄڵ尡 µé¾î ÀÖ°í, libµð·ºÅ丮¿¡´Â LGPL·Î ¹èÆ÷µÇ´Â GNU ¶óÀ̺귯¸®µéÀÇ ¼Ò½ºÄڵ尡 µé¾î ÀÖ´Ù. docµð·ºÅ丮¿¡´Â TeXinfo·Î ¾²¿©Áø ÀÌ ÆÐŰÁöÀÇ ¸Å´º¾óÀÌ µé¾î ÀÖ´Ù. intl°ú poµð·ºÅ丮´Â ´Ù±¹¾î ¸Þ¼¼Áö¸¦ Áö¿øÇϱâ À§ÇÑ µµ±¸µé°ú ¹ø¿ªµÈ ¸Þ¼¼Áö¸¦ ´ã°í ÀÖ´Ù. (¸ÓÁö ¾Ê¾Æ ¿ì¸®¸»·Î ¸Þ¼¼Áö°¡ ³ª¿À´Â ÇÁ·Î±×·¥µéÀÌ ³ª¿À°Ô µÉ °ÍÀÌ´Ù. GNU ¹ø¿ª ÇÁ·ÎÁ§Æ®ÀÇ Çѱ¹¾î ÆÀ¿¡ ¼º¿øÀ» º¸³» Áֽñ⸦..) fileutils°ú´Â ´Ù¸¥ ±¸Á¶·Î µÇ¾î ÀÖ´Â ÆÐŰÁöµµ ÀÖ´Ù. ´ÙÀ½Àº bison ÆÐŰÁöÀÌ´Ù. ---------------------------------------- coolie:~/bison-1.25$ ls -CF COPYING bison.hairy configure* gram.h reader.c ChangeLog bison.info configure.bat install-sh* reduce.c INSTALL bison.info-1 configure.in lalr.c state.h LR0.c bison.info-2 conflicts.c lex.c symtab.c Makefile.in bison.info-3 derives.c lex.h symtab.h NEWS bison.info-4 files.c machine.h system.h README bison.info-5 files.h main.c texinfo.tex REFERENCES bison.rnh getargs.c mkinstalldirs* types.h alloca.c bison.simple getopt.c new.h version.c allocate.c bison.texinfo getopt.h nullable.c vmsgetargs.c bison.1 build.com getopt1.c output.c vmshlp.mar bison.cld closure.c gram.c print.c warshall.c ---------------------------------------- ¾Æ´Ï ÀÌ°Ô À¢ ÀÏÀΰ¡? ¼Ò½ºÄÚµå, ¹®¼­, ¶óÀ̺귯¸®(alloca¿Í getopt´Â LGPL·Î ¹èÆ÷µÇ´Â ¶óÀ̺귯¸®ÀÌ´Ù.) ÇÒ °Í¾øÀÌ ÀüºÎ ÇÑ µð·ºÅ丮¿¡ µé¾î ÀÖ´Ù. ¶Ç ´Ù¸¥ ÇüŰ¡ ÀÖ´Ù. ´ÙÀ½Àº makeÀÌ´Ù. ---------------------------------------- coolie:~/make-3.75$ ls -CF COPYING build.sh.in* getopt.c make.info-4 remote-cstms.c ChangeLog build_w32.bat* getopt.h make.info-5 remote-stub.c INSTALL commands.c getopt1.c make.info-6 rule.c Makefile.ami commands.h glob/ make.info-7 rule.h Makefile.in config.ami implicit.c make.info-8 signame.c NEWS config.h-vms install-sh* make.ky signame.h* NMakefile config.h.WIN32 job.c make.lnk subproc.bat* README config.h.in job.h make.man tags README.Amiga configh.dos main.c make.pg texinfo.tex README.WIN32* configure* make-stds.texi make.texinfo variable.c SCOPTIONS configure.bat make.aux make.toc variable.h SMakefile configure.in make.cp make.tp version.c TAGS default.c make.cps make.vr vmsdir.h acconfig.h dep.h make.fn makefile.com vmsfunctions.c aclocal.m4 dir.c make.fns makefile.vms vmsify.c alloca.c expand.c make.h misc.c vpath.c amiga.c file.c make.info mkinstalldirs* w32/ amiga.h filedef.h make.info-1 read.c ar.c function.c make.info-2 readme.vms arscan.c getloadavg.c make.info-3 reake.c ---------------------------------------- ¾Õ¿¡¼­¿Í ¸¶Âù°¡Áö·Î ¸ðµç È­ÀÏÀÌ ÇÑ µð·ºÅ丮¿¡ µé¾î ÀÖ´Ù. ¼Ò½ºÄÚµå, ¶óÀ̺귯¸®, ¹®¼­ ¸ðµÎ ¿©±â µé¾î ÀÖ´Ù. ±×·±µ¥ ¸î°³ÀÇ µð·ºÅ丮°¡ ÀÖ´Ù. glob¿Í w32¶ó´Â µð·ºÅ丮°¡ ÀÖ´Ù. ƯÁ¤ ¸ñÀûÀ» À§ÇÑ Äڵ带 À§ÇØ µð·ºÅ丮¸¦ »õ·Î ¸¸µé¾î¼­ ±× ¾È¿¡ ³Ö¾î ³õ¾Ò´Ù. ÀÌ·¯ÇÑ ÆÐŰÁöÀÇ µð·ºÅ丮 ¸ð¾çÀ» ±× ÆÐŰÁöÀÇ `depth'¶ó°í ÇÑ´Ù. ù¹øÂ° °æ¿ì fileutils¿Í °°ÀÌ ¸ðµç ¼Ò½º È­ÀÏ(¹®¼­¸¦ Æ÷ÇÔÇØ¼­)µéÀÌ ¼­ºê µð·ºÅ丮¿¡ µé¾î°¡ ÀÖ´Â °æ¿ì¸¦ *deep package*¶ó°í ÇÑ´Ù. µÎ¹øÂ° °æ¿ì bison°ú °°ÀÌ ¸ðµç È­ÀÏÀÌ ÇϳªÀÇ µð·ºÅ丮¿¡ µé¾î°¡ ÀÖ´Â °æ¿ì À̰ÍÀ» *flat package*¶ó°í ÇÑ´Ù. ±×¸®°í ¸¶Áö¸·À¸·Î make¿Í °°ÀÌ ´ëºÎºÐÀÌ ÇÑ µð·ºÅ丮¿¡ µé¾î ÀÖ°í, ÀϺÎÀÇ È­ÀÏÀÌ ¼­ºê µð·ºÅ丮¿¡ µé¾î°¡ ÀÖ´Â °æ¿ì¸¦ *shallow package*¶ó°í ÇÑ´Ù. ¼±ÅÃÀº ±× ÆÐŰÁö¸¦ ¸¸µå´Â »ç¶÷¿¡°Ô ´Þ·Á ÀÖ´Ù. ¼Ò½ºÈ­ÀÏÀÌ ¸î°³¹Û¿¡ µÇÁö ¾Ê´Â ÀÛÀº ÆÐŰÁöÀÇ °æ¿ì¿¡´Â flatµµ ±¦ÂúÀ» °ÍÀÌ´Ù. ±×¸®°í, °Å±â¿¡¼­ Ưº°È÷ ¼Ò½ºÈ­ÀÏÀÌ ¾Æ´Ñ ¶óÀ̺귯¸® °°Àº°É ¼­ºêµð·ºÅ丮¿¡ ³Ö´Â shallow ÇüŰ¡ µÉ ¼öµµ ÀÖ´Ù. °³ÀÎÀûÀ¸·Î´Â deepÀ» ¼±È£ÇÑ´Ù. ³Ê¹« È­ÀÏÀÌ ¸¹¾ÆÁö¸é ¾îÁö·´±â ¦ÀÌ ¾ø´Ù. ¶Ç °¢ µð·ºÅ丮º°·Î ±× ÀÛ¾÷¿¡¸¸ Àü³äÇÒ ¼ö À־ ÁÁ´Ù. first ÆÐŰÁöµµ deepÀ¸·Î ¸¸µé¾îÁ³´Ù. (»ç½Ç deepÀÌ ÇÒ ÀÏÀÌ ¸¹´Ù.) ¿ä¾à -- ÆÐŰÁöÀÇ depth ====================== . deep -- ¸ðµç ¼Ò½º, ¹®¼­ È­ÀϵéÀÌ ¼­ºê µð·ºÅ丮¿¡ µé¾î°¡ ÀÖ´Â ÇüÅ . flat -- ¸ðµç È­ÀϵéÀÌ ÇѰ³ÀÇ µð·ºÅ丮¿¡ µé¾î°¡ ÀÖ´Â ÇüÅ . shallow -- flat¿¡¼­ ƯÁ¤ ºÎºÐ¸¸ ¼­ºê µð·ºÅ丮¿¡ µé¾î°¡ ÀÖ´Â ÇüÅ ÇÊ¿äÇÑ È­Àϵé -- ¹®¼­ È­Àϵé ****************************************************** ÆÐŰÁö¸¦ ¸¸µé¶§ °¡Àå Áß¿äÇÑ ÀÛ¾÷Àº ¿ª½Ã ¼Ò½ºÄڵ带 ÀÛ¼ºÇÏ´Â ÀÏÀÌ´Ù. ±×¸®°í ÀÌ ÆÐŰÁöÀÇ ¸Å´º¾óÀ» ÀÛ¼ºÇÏ´Â °Íµµ Áß¿äÇÑ ÀÏÀÌ´Ù. ¿ì¸®°¡ ÀÌ·± ÀÛ¾÷¿¡ ½Ã°£À» ½ñ°í ÀÖ´Â °ÍÀº °ü¸®¿¡ ½Å°æÀ» ´ú ¾²°í Áß¿äÇÑ ÀÛ¾÷¿¡ Á»´õ ¸Å´Þ¸± ¼ö ÀÖµµ·Ï Çϱâ À§Çؼ­´Ù. ´ëÇ¥ÀûÀÎ GNU ÇÁ·Î±×·¥µéÀ» »ìÆìº¸¸é, ¾ðÁ¦³ª ¹ß°ßµÇ´Â È­ÀϵéÀÌ ¸î°³ ÀÖ´Ù. ¸Ç À§ÀÇ µð·ºÅ丮¸¦ »ìÆìº¸ÀÚ. ¾ðÁ¦³ª `README', `COPYING', `INSTALL', `NEWS' µûÀ§ÀÇ È­ÀϵéÀÌ ÀÖ´Â °ÍÀ» ¾Ë ¼ö ÀÖ´Ù. ÀÌ È­ÀÏÀÌ ÀÖ°í ¾ø°í´Â Áß¿äÇÑ °ÍÀÌ ¾Æ´Ï´Ù. ÇÏÁö¸¸, Á¦¸ñ´ë·Î `±¸»öÀ» °®Ãß±â' À§Çؼ­ ÀÌ È­ÀϵéÀÌ ÇÊ¿äÇÏ´Ù. ¸ÕÀú, »óÀ§ µð·ºÅ丮¿¡ ´ÙÀ½ÀÇ ¹®¼­ È­ÀÏÀÌ ÇÊ¿äÇÏ´Ù. °øÅëÁ¡Àº ChangeLog¸¸ »©°í ¸ðµÎ ´ë¹®Àڷθ¸ À̸§ÀÌ ±¸¼ºµÇ¾ú´Ù´Â Á¡ÀÌ´Ù. README COPYING INSTALL AUTHORS NEWS ChangeLog TODO README´Â ´ç¿¬È÷ ÆÐŰÁö ÀÛ¼ºÀÚ°¡ ÀÛ¼ºÇØ¾ß ÇÒ °ÍÀÌ´Ù. ÀÌ ÇÁ·Î±×·¥¿¡ ´ëÇÑ °£´ÜÇÑ ¼³¸íÀÌ µé¾î ÀÖ´Ù. ÀÚ¼¼ÇÑ »ç¿ë¹ýÀº ´ãÁö ¾Ê´Â´Ù. ´ëºÎºÐÀÇ GNU ÇÁ·Î±×·¥ÀÇ °æ¿ì´Â ÀÌ È­ÀÏ¿¡ `¼³Ä¡ÇÏ´Â ¹æ¹ýÀº INSTALLÈ­ÀÏÀ» ºÁ¶ó.' `»ç¿ë¹ýÀº first.texi¿¡ ¹®¼­È­µÇ¾î ÀÖ´Ù.' ¶ó´Â ½ÄÀ¸·Î ´Ù¸¥ È­ÀϵéÀ» °¡¸®Å°´Â ±ÛÀ» ´ã°í ÀÖ´Ù. INSTALLµµ ÆÐŰÁö ÀÛ¼ºÀÚ°¡ ÀÛ¼ºÇØ¾ß ÇÒ °ÍÀ̳ª, ´ëºÎºÐÀÇ GNU ÇÁ·Î±×·¥µéÀÌ µ¿ÀÏÇÑ ¹æ¹ý(configure, make, make install)À¸·Î ¼³Ä¡µÇ±â ¶§¹®¿¡ ±×³É `generic install instruction'À» °¡Á®´Ù ¾´´Ù. ÀÌ ¹®¼­´Â automake µð·ºÅ丮¿¡¼­ ã¾Æº¼ ¼ö ÀÖ´Ù. COPYINGÀº GNU ÇÁ·Î±×·¥À̶ó¸é, General Public License¸¦ º¹»çÇØ¼­ ¾²¸é µÉ °ÍÀÌ´Ù. ÀÌ È­ÀÏ ¿ª½Ã automake µð·ºÅ丮¿¡ ÀÖ´Ù. AUTHORS¿¡´Â ÀÌ ÆÐŰÁöÀÇ ÀÛ¼ºÀÚ¸¦ ¾´´Ù. ÀÚ±â À̸§ ¼®ÀÚ¸¦ ½á ³ÖÀÚ. ¿µ¾î·Î ½á¾ß ÇÑ´Ù. ÀÌ È­ÀÏÀº ÀÚ±â À̸§ ÀÚ¶ûÇÏ·Á°í ÀÖ´Â °Ô ¾Æ´Ï´Ù. ´©°¡ ¾î¶² ÀÛ¾÷À» Çߴ°¡¸¦ ºÐ¸íÈ÷ ÇØ¼­, ¾î¶² ¹ö±×°¡ ÀÖ´ÂÁö¸¦ ¾Ë±â ½±µµ·Ï Çϱâ À§ÇÔÀÌ´Ù. Èʳ¯ ÀÌ ÆÐŰÁö¸¦ À̾î¹Þ´Â »ç¶÷ÀÌ ÀÖ´Ù¸é ±× »ç¶÷ÀÇ À̸§ÀÌ ´ç½ÅÀÇ À̸§ µÚ¿¡ ¾²¿©Áú °ÍÀÌ´Ù. NEWS´Â ÀÌ ÆÐŰÁö°¡ ÀÌÀü ÆÐŰÁö¸¦ ¾÷±×·¹À̵åÇÑ°Ô ¾Æ´Ï¶ó¸é ÇÊ¿ä¾ø´Ù. ÀÌÀü ¹öÀü°ú ´Þ¶óÁø Á¡À» ½á ³Ö´Â È­ÀÏÀÌ´Ù. ChangeLog´Â Äڵ带 ½á ³»·Á°¡¸é¼­ ÀÛ¼ºÇÏ´Â °ÍÀ̱⠶§¹®¿¡ À̰͵µ ÇÊ¿ä¾ø´Ù. ÇÏÁö¸¸, ÀÌ È­ÀϵéÀÌ ¾øÀ¸¸é automake¿¡¼­ °æ°í ¸Þ¼¼Áö°¡ ³ª¿À¹Ç·Î, `touch NEWS ChangeLog' ¸í·ÉÀ¸·Î ÀÌ È­ÀϵéÀ» ¸¸µé¾î µÎÀÚ. TODO´Â »ç½Ç ÇÊ¿ä¾ø´Ù. automakeµµ °æ°í¸¦ ³»Áö ¾Ê´Â´Ù. ÇÏÁö¸¸, °³ÀÎÀûÀ¸·Î ÀÌ È­ÀÏÀº ¾ÆÁÖ Áß¿äÇÑ È­ÀÏÀ̶ó°í »ý°¢ÇÑ´Ù. ±×¶§ ±×¶§ ÀÌ ÆÐŰÁöÀÇ ¹ßÀü¹æÇâÀ» Àû¾î ³õÀ¸¸é, ±× ±â´ÉµéÀ» ÇϳªÇϳª Æ÷ÇÔ½ÃÄÑ ³ª°¡¸é¼­ ÇÁ·Î±×·¥À» ¹ßÀü½ÃŰ´Â °ÍÀÌ´Ù. ÇÊ¿äÇÑ È­Àϵé(2) -- ¿©·¯°¡Áö µµ±¸µé ***************************************** ÀÌÁ¦ ±¸»öÀ» °®Ãß±â À§ÇÑ °Ô ¾Æ´Ñ ÁøÂ¥ ÇÊ¿äÇÑ È­ÀϵéÀ» ÀÛ¾÷ µð·ºÅ丮¿¡ º¹»çÇØ¾ß ÇÑ´Ù. ¸Ç À§ µð·ºÅ丮¿¡ ´ÙÀ½ ½ºÅ©¸³Æ®°¡ ÇÊ¿äÇÏ´Ù. install-sh mkinstalldirs ÀÌ ½ºÅ©¸³Æ®ÀÇ ±â´ÉÀ» ¸ô¶óµµ ÆÐŰÁö¸¦ ¸¸µå´Â µ¥´Â ÁöÀåÀÌ ¾ø´Ù. install-shÀº install ¸í·É°ú °°Àº ±â´ÉÀ» °®°í ÀÖ´Ù. È­ÀÏÀ» ¼³Ä¡ÇÒ µð·ºÅ丮·Î º¹»çÇÒ¶§ ÇÁ·Î±×·¥ÀÇ ¼ÒÀ¯±ÇÀ» °áÁ¤ÇÑ´ÙµçÁö µð¹ö±ë Á¤º¸¸¦ stripÇÑ´ÙµçÁö ÇÏ´Â ±â´ÉÀ» °®°í ÀÖ´Ù. ¹°·Ð installÀÌ ¼³Ä¡µÇ¾î ÀÖ´Â Linux ½Ã½ºÅÛ¿¡¼­ ¼³Ä¡ÇÒ¶§´Â ÀÌ È­ÀÏÀº Çʿ䰡 ¾ø´Ù. ÇÏÁö¸¸, ÀÌ ÇÁ·Î±×·¥ÀÌ ¾ø´Â ½Ã½ºÅÛÀ» À§Çؼ­ ÀÌ È­ÀÏÀ» º¹»çÇØµÐ´Ù. mkinstalldirs´Â mkdirhier¿Í °°Àº ±â´ÉÀ» °®°í ÀÖ´Ù. È­ÀÏÀ» ¼³Ä¡Çϱâ Àü¿¡ ¼³Ä¡ÇÒ µð·ºÅ丮¸¦ ¸¸µå´Âµ¥ ¾²ÀδÙ. ÀÌ ¿ª½Ã mkdirhier ¸í·ÉÀÌ ¾ø´Â ½Ã½ºÅÛÀ» À§Çؼ­ º¹»çÇØ µÐ´Ù. ¸¸¾à, ¸¸µå·Á°í ÇÏ´Â ÆÐŰÁö°¡ deepÀ̶ó¸é docµð·ºÅ丮¿¡, flatÀ̳ª shallow¶ó¸é ¸Ç À§ µð·ºÅ丮¿¡ ÇÊ¿äÇÑ ¸Å´º¾óÀ» À§ÇÑ È­ÀÏÀÌ ÀÖ´Ù. texinfo.tex mdate-sh GNUÀÇ ¹®¼­´Â texinfo·Î ÀÛ¼ºµÈ´Ù. texinfo ÆÐŰÁö°¡ ¼³Ä¡µÈ ½Ã½ºÅÛµµ ÀÖÁö¸¸, ±×·¸Áö ¾ÊÀº ½Ã½ºÅÛµµ ÀÖ´Ù. ÄÄÆÄÀϵǾî ÀÖ´Â dvi³ª, ps¸¦ Æ÷ÇÔÇÒ ¼öµµ ÀÖ°ÚÀ¸³ª, ±×°Ç ³¶ºñ¶ó°í »ý°¢Çß´ÂÁö, TeX¸¸ ¼³Ä¡µÇ¾î ÀÖÀ¸¸é hardcopy¸¦ Âï¾î³¾ ¼ö ÀÖµµ·Ï texinfo.texÀ» Æ÷ÇÔÇϵµ·Ï `GNU Coding Standards'¿¡¼­ Á¤Çϰí ÀÖ´Ù. ¹®¼­È­ÀÏÀÌ ÀÖ´Â °÷¿¡ ÀÌ È­ÀÏÀ» ¹Ýµå½Ã Æ÷ÇÔÇÏÀÚ. ±×·¸Áö ¾ÊÀ¸¸é ¿ª½Ã automake°¡ °æ°í¸¦ ³¾ °ÍÀÌ´Ù. `mdate-sh'¶ó´Â ¼Ð ½ºÅ©¸³Æ®´Â ±×³É ³¯Â¥¸¦ ÇÁ¸°Æ®ÇØ ÁÖ´Â ½ºÅ©¸³Æ®ÀÌ´Ù. ¹®¼­¿¡ ÃÖÁ¾ º¯°æÀÏÀ» ±â·ÏÇÏ´Â µ¥ »ç¿ëÇÑ´Ù. ÀÌ ½ºÅ©¸³Æ®¸¦ ½ÇÇàÇØ º¸¸é ´ÙÀ½°ú °°ÀÌ ³¯Â¥°¡ ³ª¿À°Ô µÉ °ÍÀÌ´Ù. ---------------------------------------- coolie:~/first/doc$ mdate-sh 31 August 1996 coolie:~/first/doc$ ------------------------------------- ÀÌ ½ºÅ©¸³Æ®´Â ÃÖÁ¾ º¯°æÀÏÀ» ¹®¼­³»¿¡ ±â·ÏÇϱâ À§ÇØ »ç¿ëµÈ´Ù. µÚ¿¡ ÆÐŰÁöÀÇ ¹öÀüÀ» ¾î¶»°Ô °áÁ¤ÇÒ °ÍÀΰ¡ÀÇ ¹®Á¦¿¡¼­ ´Ù½Ã ¾ð±ÞµÈ´Ù. ±×¸®°í ¼Ò½ºÄڵ尡 µé¾î ÀÖ´Â µð·ºÅ丮¿¡ ¼±Åÿ¡ µû¶ó Æ÷ÇÔÇÒ ¼öµµ ÀÖ°í, ÇÏÁö ¾ÊÀ» ¼öµµ ÀÖ´Â È­ÀÏÀÌ ÀÖ´Ù. ansi2knr.c ansi2knr.1 ansi2knr¶ó´Â ÇÁ·Î±×·¥ÀÇ ¼Ò½ºÄÚµå¿Í ±×°ÍÀÇ man page È­ÀÏÀÌ´Ù. `GNU Coding Standards'¿¡¼­´Â ANSI C styleÀÇ ÇÔ¼öÀÇ Àμö Ç¥½Ã ¹æ½ÄÀ» ¾²Áö ¸» °ÍÀ» ±ÇÇϰí ÀÖ´Ù. ¿Ö³ÄÇÏ¸é ¾ÆÁ÷µµ ANSI C°¡ ¼³Ä¡µÇ¾î ÀÖÁö ¾ÊÀº ½Ã½ºÅÛÀÌ Àֱ⠶§¹®ÀÌ´Ù. ´ÙÀ½ (1)°ú °°ÀÌ ¾²¸é ¾È µÇ°í (2)¿Í °°ÀÌ ½á¾ß ÇÑ´Ù. (1)------------------------------------- main (int argc, char **argv, char **env) { ... ---------------------------------------- (2)------------------------------------- main (argc, argv, env) int argc; char **argv, **env; { ... ---------------------------------------- ÇÏÁö¸¸, ¿äÁò ´ëºÎºÐÀÇ ÇÁ·Î±×·¡¸Ó´Â (1)ÀÇ ANSI C¹æ½ÄÀ» »ç¿ëÇϱæ ÁÁ¾ÆÇÏ°í ´ç¿¬È÷ ÀÌ·¸°Ô ½á¾ß ÇÏ´Â °ÍÀ¸·Î »ý°¢ÇÑ´Ù. ANSI C¸¦ »ç¿ëÇÏ´Â ¹æ¹ýÀº ÀÖ´Ù. ±×°ÍÀº ansi2knrÀ̶ó´Â ÇÁ·Î±×·¥À» ÆÐŰÁö¿¡ Æ÷ÇÔ½ÃŰ´Â °ÍÀÌ´Ù. ÀÌ ÇÁ·Î±×·¥Àº (1)°ú °°Àº ¹æ½ÄÀ¸·Î µÇ¾î ÀÖ´Â C ¼Ò½ºÄڵ带 (2)¿Í °°ÀÌ °íÃÄÁØ´Ù. ³ªÁß¿¡ ÀÌ ¿É¼Ç¿¡ °üÇÑ ¾ð±ÞÀÌ ÀÖÀ» °ÍÀÌ´Ù. ANSI C¸¦ ¾²·Á¸é, automake µð·ºÅ丮¿¡ ÀÖ´Â ansi2knr.c¿Í ansi2knr.1À» ANSI C Äڵ尡 µé¾î ÀÖ´Â µð·ºÅ丮¿¡ º¹»çÇÑ´Ù. ¾î¶² µð·ºÅ丮µçÁö, ANSI C Äڵ尡 µé¾î ÀÖ´Â °æ¿ì´Â ÀÌ 2°³ÀÇ È­ÀÏÀÌ ²À ÇÊ¿äÇÏ´Ù. ¸¶Áö¸·À¸·Î ¶Ç ÇϳªÀÇ È­ÀÏÀ» ¸Ç »óÀ§ µð·ºÅ丮¿¡ º¹»çÇÏÀÚ. aclocal.m4 ÀÌ È­ÀÏÀº ¾ÕÀ¸·Î »ç¿ëÇÏ°Ô µÉ automake¿¡¼­ ÇÊ¿ä·Î ÇÏ´Â ¸ÅÅ©·Î¿¡ ´ëÇÑ Á¤ÀǸ¦ ´ã°í À־ ²À ÇÊ¿äÇÏ´Ù. ¾øÀ¸¸é warning Á¤µµ°¡ ¾Æ´Ï¶ó ¾Æ¿¹ ÀÛµ¿µÇÁö ¾ÊÀ» °ÍÀÌ´Ù. ¡º¸®´ª½º Çдç-¸®´ª½º °­Á / ¿¬Àç (go LINUX)¡» 334¹ø Á¦ ¸ñ:GNUtic -- Autoconf/Automake <2> ¿Ã¸°ÀÌ:onestep (·ùâ±Õ ) 96/10/05 05:26 ÀÐÀ½:1512 °ü·ÃÀÚ·á ¾øÀ½ ----------------------------------------------------------------------------- È­ÀÏÀÛ¼º ******** µåµð¾î È­ÀÏÀ» ¼Õ¼ö ÀÛ¼ºÇØ¾ß ÇÒ ¶§°¡ ¿Ô´Ù. ¿ì¸®°¡ ¸¸µé°íÀÚ ÇÏ´Â ÆÐŰÁö°¡ ¾î¶»°Ô °ü¸®µÇ´ÂÁö ¼³¸íÇÑ ÈÄ¿¡ Á÷Á¢ ÀÛ¼ºÇØ º¸µµ·Ï ÇÏÀÚ. ´ÙÀ½Àº autoconf ¸Å´º¾ó¿¡¼­ °¡Á®¿Í¼­ ¾à°£ °íÄ£ °ÍÀÌ´Ù. ´ÙÀ½Àº ¿ì¸®°¡ ÆÐŰÁö¸¦ °¡Á®¿Í¼­ ÄÄÆÄÀÏÇϱâ±îÁöÀÇ °úÁ¤À» ³ªÅ¸³½ °ÍÀÌ´Ù. È­ÀÏÀ̸§ µÚ¿¡ *°¡ ºÙÀº °ÍÀº ±× ÇÁ·Î±×·¥À» ½ÇÇàÇÑ´Ù´Â ¶æÀ̰í, []¾È¿¡ µé¾î ÀÖ´Â È­ÀÏÀº ¾øÀ» ¼öµµ ÀÖ´Ù´Â ¶æÀÌ´Ù. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .-------------> config.cache configure* ------------+-------------> config.log | [config.h.in] -. v .-> [config.h] -. +--> config.status* -+ +--> make* Makefile.in ---' `-> Makefile ---' ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ configure ½ºÅ©¸³Æ®¸¦ ½ÇÇàÇÏ¿© config.cache¿¡ ½ºÅ©¸³Æ® ½ÇÇà½Ã¿¡ ¾Ë°Ô µÈ Á¤º¸¸¦ ´ã´Â´Ù. ´Ù½Ã configure¸¦ ½ÇÇàÇÒ¶§ ÀÌ È­ÀÏ¿¡ µé¾îÀÖ´Â Á¤º¸¸¦ »ç¿ëÇØ¼­ º¸´Ù »¡¸® ¼öÇàÇÒ ¼ö ÀÖ°Ô ÇÑ´Ù. config.log´Â ¸Þ¼¼Áö¸¦ ±â·ÏÇÏ´Â È­ÀÏÀÌ´Ù. config.h.inÀº config.h¿¡ ¹«¾ùÀ» ³ÖÀ» °ÍÀΰ¡¿¡ ´ëÇÑ Á¤º¸°¡ µé¾î ÀÖ´Ù. ½ÇÁ¦·Î µé¾î´Ù º¸¸é, #undef ¹®À¸·Î °¡µæÇÏ´Ù. »ý¼ºµÇ´Â config.h¿¡´Â ±× ÇØ´ç definitionÀÌ #defineÀ¸·Î ¹Ù²î¾î ³ªÅ¸³­´Ù. Makefile.inÀº Makefile°ú ´Ù¸¦ °ÍÀÌ ¾ø´Ù. ´ÜÁö `@¾î¼±¸@'·Î µÇ¾î ÀÖ´Â ºÎºÐÀÌ ÀÖ´Ù. configure ½ºÅ©¸³Æ®¸¦ ¼öÇàÇÏ°í ³ª¸é, ÀÌ ºÎºÐÀÌ ´Ù¸¥ °ÍÀ¸·Î ġȯµÈ´Ù. configure¸¦ ½ÇÇà½Ã۸é, ÀÏ´Ü, ½Ã½ºÅÛÀÇ Á¤º¸¸¦ ¾Ë¾Æ³½ ´ÙÀ½ config.status¶ó´Â ¶Ç ´Ù¸¥ ½ºÅ©¸³Æ®¸¦ ¸¸µç´Ù. ÀÌ ½ºÅ©¸³Æ®¸¦ ½ÇÇà½ÃÄ×À»¶§ ¹Ì¸® ÀúÀåµÈ ½Ã½ºÅÛ Á¤º¸¿¡ µû¶ó config.h³ª MakefileÀ» »ý¼ºÇÏ°Ô µÈ´Ù. config.status´Â ´Ù½Ã configure¸¦ ½ÇÇà½ÃŰÁö ¾Ê°í, MakefileÀ̳ª config.h¸¦ ¸¸µé¾î³¾¶§ ¾²ÀδÙ. ±×·¯¸é ¸¸µé¾î¾ß ÇÒ °ÍÀÌ configure½ºÅ©¸³Æ®¿Í config.h.in, Makefile.inÀÌ µÉ °ÍÀÌ´Ù. configure¿Í config.h.inÀº autoconf°¡ ÀÚµ¿À¸·Î ¸¸µé¾î ÁØ´Ù. ´ÙÀ½À» º¸ÀÚ. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ your source files --> [autoscan*] --> [configure.scan] --> configure.in configure.in --. .------> autoconf* -----> configure +---+ [aclocal.m4] --+ `---. [acsite.m4] ---' | +--> [autoheader*] -> [config.h.in] [acconfig.h] ----. | +-----' [config.h.top] --+ [config.h.bot] --' ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ configure´Â autoconf¿¡ ÀÇÇØ¼­, config.h.inÀº autoheader(autoconf ÆÐŰÁöÀÇ ÀϺÎ)¿¡ ÀÇÇØ ¸¸µé¾îÁö°Ô µÈ´Ù. config.h.inÀº ¿ÏÀüÈ÷ ÀÚµ¿À¸·Î ¸¸µé¾îÁö°í, configure.inÀº autoheader¸¦ µ¹¸° ÈÄ¿¡ »ý¼ºµÈ configure.scanÀ» ¾à°£ ¼öÁ¤ÇØ¾ß ÇÑ´Ù. ¹®Á¦´Â Makefile.inÀε¥ À̰ÍÀº automake·Î ÇØ°áµÈ´Ù. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Makefile.am ---. +--> Makefile.in configure.in --' ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ¿ì¸®°¡ ÁøÂ¥ ½Å°æ½á¼­ ÀÛ¼ºÇØ¾ß ÇÒ È­ÀÏÀº Makefile.am»ÓÀÌ´Ù. ÀÌ È­ÀÏÀ» ÀÛ¼ºÇÏ´Â °ÍÀº ¾ÆÁÖ ½±´Ù. º¹ÀâÇØ º¸ÀÌ´Â À§ÀÇ °úÁ¤À» ´Ü¼øÈ­Çϱâ À§ÇØ ¸¸µé¾î ³½ °ÍÀÎ ¸¸Å­ Á¤ÇØÁø ±ÔÄ¢À» Àß µû¸¥´Ù¸é, ¾ÆÁÖ ½±°Ô ÆÐŰÁö¸¦ °ü¸®ÇÒ ¼ö ÀÖ´Ù. Makefile.amÀÇ ÀÛ¼º ****************** ¸ÕÀú, µ¶ÀÚ°¡ MakefileÀÇ ±¸Á¶¸¦ ¾Ë°í ÀÖ´Ù°í °¡Á¤ÇÑ´Ù. Makefile.amµµ MakefileÀÇ Çü½ÄÀε¥ º¯¼öÀ̸§À» Á¤ÇØÁø À̸§À» »ç¿ëÇÔÀ¸·Î½á ¾ÆÁÖ °£°áÇÏ°Ô ÀÛ¼ºµÈ´Ù. Makefile.amÀº µð·ºÅ丮°¡ ¿©·¯°³ÀÎ °æ¿ì, ±×·¯´Ï±î deepÀ̳ª shallow ÇüÅÂÀÏ °æ¿ì¿¡ °¢ µð·ºÅ丮¸¶´Ù ÇѰ³¾¿ ÇÊ¿äÇÏ´Ù. ÀÏ´Ü, ±× µð·ºÅ丮¿¡ ¼­ºê µð·ºÅ丮°¡ ÀÖÀ» °æ¿ì ´ÙÀ½°ú °°ÀÌ SUBDIRS º¯¼ö¿¡ ±× ¼­ºêµð·ºÅ丮ÀÇ À̸§À» ¼­Áà¾ß ÇÑ´Ù. ´ÙÀ½Àº first ÆÐŰÁöÀÇ ¸Ç À§ µð·ºÅ丮ÀÇ Makefile.amÀÌ´Ù. ---------------------------------------- SUBDIRS = lib src doc ---------------------------------------- deep ÆÐŰÁöÀÇ °æ¿ì ¸Ç À§ µð·ºÅ丮¿¡¼­´Â ÀÌ°Í Çϳª·Î ¸ðµç°Ô ÇØ°áµÈ´Ù. ½ÇÁ¦ ±× µð·ºÅ丮¿¡´Â ¼Ò½º È­ÀÏÀÌ ¾ø±â ¶§¹®¿¡ ¼­ºê µð·ºÅ丮¿¡¼­ ÇÒ Àϸ¸ ÇØ ÁÖ¸é µÇ´Â °ÍÀÌ´Ù. ´Ü, ÀÌ ¼ø¼­¿¡ À¯ÀÇÇÒ Çʿ䰡 ÀÖ´Ù. º¸Åë ¶óÀ̺귯¸® µð·ºÅ丮¿¡ ÀÖ´Â È­ÀϵéÀº ÄÄÆÄÀÏµÈ ÈÄ¿¡ ar ¸í·ÉÀ» ÅëÇØ¼­ ÇѰ³ÀÇ .a È­ÀÏ·Î ¸¸µé¾îÁø´Ù. ±× ´ÙÀ½¿¡ ÁøÂ¥ ¼Ò½ºÄÚµå¿Í ¸µÅ©µÈ´Ù. ¶óÀ̺귯¸®°¡ ¾ðÁ¦³ª ¼Ò½ºÄڵ庸´Ù ¸ÕÀú ¸¸µé¾îÁ®¾ß ÇÑ´Ù. ¹Ýµå½Ã lib¸¦ ¸ÕÀú ½á ÁÖ°í, src¸¦ ±× ´ÙÀ½¿¡ ½á ÁØ´Ù. ±×¸®°í °¢ µð·ºÅ丮¸¶´Ù Makefile.amÀ» ÀÛ¼ºÇØ¾ß ÇÑ´Ù. ÀÚ, ÇϳªÇϳª »ìÆìº¸ÀÚ. ´ÙÀ½Àº firstÀÇ src/Makefile.amÀÌ´Ù. ---------------------------------------- AUTOMAKE_OPTIONS = ansi2knr bin_PROGRAMS = first first_SOURCES = first.c fileblock.c noinst_HEADERS = fileblock.h EXTRA_DIST = ansi2knr.c ansi2knr.1 LDADD = ../lib/libfirst.a $(bin_PROGRAMS): ../lib/libfirst.a ---------------------------------------- AUTOMAKE_OPTIONS º¯¼ö¿¡´Â À̸§ ±×´ë·Î ¿É¼ÇÀ» ½áÁØ´Ù. ÀÌ ¼Ò½º´Â ANSI C·Î µÇ¾î ÀÖÀ¸¹Ç·Î, ansi2knr¿É¼Ç°ú ÇÔ²² ansi2knrÀÇ ¼Ò½º È­ÀÏÀÌ µé¾î ÀÖ¾î¾ß ÇÑ´Ù. EXTRA_DIST¿¡ ½áÁÖÁö ¾ÊÀ¸¸é ÀÌ È­ÀϵéÀº Æ÷ÇÔµÇÁö ¾Ê´Â´Ù´Â °Í¿¡ À¯ÀÇÇÏÀÚ. extra distributionÀ» ¶æÇÑ´Ù. bin_PROGRAMS º¯¼ö¿¡´Â ÃÖÁ¾ÀûÀ¸·Î ¸µÅ©µÉ ½ÇÇàÈ­ÀÏÀÇ À̸§À» Àû´Â´Ù. ¿©·¯°³ÀÏ °æ¿ì´Â ¿©·¯°³¸¦ Çϳª¾¿ Àû´Â´Ù. ±×¸®°í `first_SOURCES' first¶ó´Â ½ÇÇàÈ­ÀÏÀ» ÄÄÆÄÀÏÇϴµ¥ ÇÊ¿äÇÑ ¼Ò½ºÈ­ÀϵéÀÌ´Ù. (Çì´õ È­ÀÏÀº ÀûÁö ¾Ê´Â´Ù.) noinst_HEADERS, noinst´Â installÇÏÁö ¾Ê´Â´Ù´Â ¶æÀÌ´Ù. ±×·¯´Ï±î ÀÌ È­ÀÏÀ» Çѹø ÄÄÆÄÀÏÇÑ ÈÄ¿¡´Â ÇÊ¿ä¾ø¾îÁø´Ù´Â ¶æÀÌ´Ù. Çì´õ È­ÀÏÀº ¹°·Ð ±×·¸´Ù. noinst_HEADERS¿¡ ±× µð·ºÅ丮ÀÇ ¸ðµç Çì´õ È­ÀÏÀ» ´Ù ½áÁØ´Ù. make¸¦ ¾µ ÁÙ ¾Æ´Â µ¶ÀÚ¶ó¸é ÇѰ¡Áö Àǹ®ÀÌ »ý°åÀ» °ÍÀÌ´Ù. Çì´õ È­ÀÏ »çÀÌÀÇ ÀÇÁ¸¼º(dependency)¹®Á¦´Â ¾î¶»°Ô ÇØ°áµÇ´Â °ÍÀϱî? ¿¹¸¦ µé¾î¼­ first¿¡´Â first.c¿¡ `#include "fileblock.h"' ¶ó´Â ºÎºÐÀÌ À־ fileblock.h°¡ º¯°æµÇ¾úÀ» °æ¿ì first.c´Â ´Ù½Ã ÄÄÆÄÀϵǾî¾ß ÇÑ´Ù. automake´Â ½ÇÇàµÉ¶§ ÀÚµ¿À¸·Î ÇØ´ç ¼Ò½ºÄڵ带 °Ë»öÇØ¼­ #include µÇ¾î ÀÖ´Â ºÎºÐÀ» ã¾Æ³»¼­ ÀÇÁ¸¼ºÀ» ½á ÁØ´Ù. ÀÌÁ¦ ´õ ÀÌ»ó Çì´õ¿Í ¼Ò½ºÄÚµå »çÀÌÀÇ ÀÇÁ¸¼º ¹®Á¦¿¡ ½Å°æ½½ Çʿ䰡 ¾ø´Ù. ±×·¯¸é ¶Ç ´Ù½Ã Àǹ®ÀÌ »ý±ä´Ù. ±×·¯¸é µµ´ëü noinst_HEADERS¿¡ ¿Ö ½áÁÖ´Â °ÍÀϱî? ÀÏ´Ü, ¿©±â ¾²¿© ÀÖÁö ¾ÊÀº °æ¿ì automake´Â ÀÇÁ¸¼ºÀ» Ãß°¡ÇÏÁö ¾ÊÀ» °ÍÀÌ´Ù. ±×¸®°í ³ªÁß¿¡ ¿ì¸®°¡ Á÷Á¢ ÇØ º¸°ÚÁö¸¸, Makefile.am ¾È¿¡¼­ ¾ð±ÞµÇÁö ¾ÊÀº È­ÀϵéÀº ÃÖÁ¾ÀûÀÎ ¼Ò½º ¹èÆ÷º»¿¡ Æ÷ÇÔµÇÁö ¾Ê´Â´Ù. ¿ì¸®´Â first-0.1.tar.gz °ú °°Àº ¹èÆ÷º»À» ¸¸µé±â À§ÇØ Á÷Á¢ tar¿Í gzipÀ» »ç¿ëÇÏÁö ¾Ê´Â´Ù. `make dist'·Î ²À ÇÊ¿äÇÑ È­Àϸ¸ ¾ÐÃàÇØ¼­ ¹èÆ÷º»À» ¸¸µç´Ù. EXTRA_DIST¿¡ ansi2knrÀ» ½á ÁÖ´Â ÀÌÀ¯µµ °°´Ù. ¿©±â ¾²Áö ¾ÊÀ¸¸é ³ªÁß¿¡ Æ÷ÇÔµÇÁö ¾Ê´Â´Ù. ÇÏÁö¸¸, AUTOMAKE_OPTIONS¿¡ ansi2knrÀ» ½á ÁÖ°í ´Ù½Ã ¼­ Áà¾ß ÇÑ´Ù´Â °Ç ¹®Á¦°¡ ÀÖ´Ù°í »ý°¢ÇÑ´Ù. ´ÙÀ½ ¹öÀü¿¡¼­ °³¼±µÇ¸®¶ó°í ¹Ï´Â´Ù. ±× µÞºÎºÐÀº deepÀ̳ª shallow ÆÐŰÁö °°Àº °æ¿ì¿¡ ÇÊ¿äÇÑ °ÍÀÌ´Ù. ÀÌ ÆÐŰÁö¿¡¼­ ¸¸µé¾îÁø ¶óÀ̺귯¸®¸¦ »ç¿ëÇϱâ À§Çؼ­´Â ¹Ýµå½Ã LDADD¿¡ ½áÁà¾ß ÇÑ´Ù. ±×·¡¾ß¸¸ ÇÁ·Î±×·¥À» ¸¸µé¶§ ±× ¶óÀ̺귯¸®°¡ ¸µÅ©°¡ µÈ´Ù. ±×·¯¸é ½ÇÇàÈ­ÀÏÀÌ ¿©·¯°³ ÀÖÀ»¶§ a¶ó´Â ÇÁ·Î±×·¥¿¡´Â liba.a¶ó´Â ¶óÀ̺귯¸®¸¦ ¸µÅ©Çϰí, b¶ó´Â ÇÁ·Î±×·¥¿¡´Â libb.a ¶ó´Â ¶óÀ̺귯¸®¸¦ ¸µÅ©ÇØ¾ß ÇÒ »óȲÀ̶ó¸é ¾î¶»°Ô ÇÒ±î? ´«Ä¡°¡ ºü¸£´Ù¸é, ÀÌ¹Ì automakeÀÇ º¯¼ö¸í¸í¹ýÀ» ¾Ë¾ÆÃ«À» °ÍÀÌ´Ù. °¢°¢ ---------------------------------------- a_LDADD = ../lib/liba.a b_LDADD = ../lib/libb.a ---------------------------------------- ¶ó°í ½á ÁÖ¸é µÈ´Ù. ÇÁ·Î±×·¥ÀÇ À̸§ÀÌ ¾Õ¿¡ ¿À°í, ±× ´ÙÀ½¿¡ ¹ØÁÙ, ±× ´ÙÀ½¿¡´Â ±× ÇÁ·Î±×·¥¿¡ ÇØ´çµÇ´Â º¯¼ö¸íÀ» ¾²¸é µÈ´Ù. ±×·¯¸é ÀÌ ÆÐŰÁö¿¡¼­ ¸¸µé¾îÁø ¶óÀ̺귯¸®°¡ ¾Æ´Ñ, ½Ã½ºÅÛ¿¡ ¼³Ä¡µÈ ¶óÀ̺귯¸®¸¦ ¸µÅ©ÇÒ¶§´Â ¾î¶»°Ô ÇÒ ¼ö ÀÖÀ»±î? ±× ¶§´Â LDADDº¯¼ö¿¡ ÇØ´ç ¶óÀ̺귯¸® ¿É¼ÇÀ» ¾´´Ù. c¶ó´Â ÇÁ·Î±×·¥¿¡ -lX11 ¿É¼ÇÀ» ºÙ¿©¼­ ¸µÅ©ÇÏ°í ½Í´Ù¸é, ---------------------------------------- c_LDADD = -lX11 ---------------------------------------- À̶ó°í ½áÁÖ¸é µÈ´Ù. À§ÀÇ firstÀÇ ¿¹Á¦¿¡¼­ È­ÀÏ ÀÇÁ¸¼º ¼³Á¤ÀÌ Çϳª ´«¿¡ ¶ßÀδÙ. $(bin_PROGRAMS)º¸´Ù ../lib/libfirst.a°¡ ¸ÕÀú ¸¸µé¾îÁ®¾ß ÇÑ´Ù´Â °ÍÀÌ´Ù. Á¦´ë·Î ÄÄÆÄÀÏÀÌ µÈ´Ù¸é, libfirst.a°¡ ³ªÁß¿¡ ¸¸µé¾îÁú ÀÏÀº ¾ø´Ù. ÇÏÁö¸¸, ¿¹¸¦ µé¾î¼­ configure ½ºÅ©¸³Æ®¸¦ ½ÇÇàÇÑ ´ÙÀ½¿¡ lib µð·ºÅ丮 ³»ÀÇ ¶óÀ̺귯¸®°¡ ¸¸µé¾îÁöÁö ¾ÊÀº »óÅ¿¡¼­ src µð·ºÅ丮¿¡ Á÷Á¢ µé¾î°¡¼­ make¸¦ ½ÇÇà½ÃŰ¸é ¾î¶»°Ô µÇ°Ú´Â°¡? ÀÌ ÀÇÁ¸¼º ¼³Á¤ÀÌ ¾ø´Ù¸é, make´Â ../lib/libfirst.a¸¦ ¸µÅ©ÇÏ·Á°í ½ÃµµÇÒ °ÍÀ̰í, ¸µÄ¿·ÎºÎÅÍ `no such a file' À̶ó´Â ¸Þ¼¼Áö°¡ ³ª¿À°Ô µÉ °ÍÀÌ´Ù. ÇÏÁö¸¸, ÀÌ ÀÇÁ¸¼º ¼³Á¤¶§¹®¿¡ make´Â ../lib/libfirst.a°¡ ¾ø´Ù´Â °ÍÀ» ¾Ë°í, make ÇÁ·Î±×·¥»ó¿¡¼­ `no such a rule..' ¾î¼±¸ ÇÏ´Â ¸Þ¼¼Áö°¡ ³ª¿Ã °ÍÀÌ´Ù. ¾ÕÀÇ °æ¿ìó·³ ¸µÄ¿¿¡¼­ ¾Ö·¯°¡ ³ª´Â °Íº¸´Ù make¿¡¼­ ¾Ö·¯¸¦ ³»º¸³»´Â ÆíÀÌ ³´Áö ¾ÊÀº°¡? º° Â÷ÀÌ ¾ø´Ù°í »ý°¢Çϸé, ±»ÀÌ ¾ø¾îµµ µÇ´Â ºÎºÐÀÌ´Ù. ÀÌÁ¦ ¶óÀ̺귯¸®°¡ µé¾î ÀÖ´Â µð·ºÅ丮¸¦ º¸ÀÚ. ´ÙÀ½Àº lib/Makefile.amÀÌ´Ù. ---------------------------------------- noinst_LIBRARIES = first first_SOURCES = error.c getopt.c getopt1.c xmalloc.c noinst_HEADERS = getopt.h ---------------------------------------- noinst_LIBRARIES, ¿ª½Ã ÄÄÆÄÀϽÿ¡¸¸ »ç¿ëµÇ°í, ¼³Ä¡µÇÁö´Â ¾ÊÀ¸¹Ç·Î noinst Á¢µÎ¾î°¡ ºÙ´Â´Ù. first¶ó°í À̸§À» ºÙÀÌ¸é ¸¸µé¾îÁö´Â ¶óÀ̺귯¸®ÀÇ À̸§Àº libfirst.a°¡ µÈ´Ù. first_SOURCES´Â ¸¶Âù°¡Áö·Î »ý°¢ÇÏ¸é µÈ´Ù. first¶ó´Â ¶óÀ̺귯¸®¸¦ ¸¸µé±â À§ÇØ »ç¿ëµÇ´Â ¼Ò½ºÄÚµåÀÌ´Ù. ¿ª½Ã ¶óÀ̺귯¸®¿¡ »ç¿ëµÇ´Â Çì´õÈ­Àϵµ noinst_HEADERS¿¡ ½áÁà¾ß ÇÑ´Ù. ÀÌ µð·ºÅ丮¿¡ ÀÖ´Â ¼Ò½ºÄÚµå´Â ¸ðµÎ K&R style·Î ÄÚµùµÇ¾ú±â ´ë¹®¿¡ ansi2knr ¿É¼ÇÀ» ºÙ¿©ÁÙ Çʿ䰡 ¾ø´Ù´Â °Í¿¡ ÁÖ¸ñÇÏÀÚ. ÀÚ, ÀÌÁ¦ ¼º°ÝÀÌ Á» ´Ù¸¥ doc/Makefile.amÀ» º¸ÀÚ. ---------------------------------------- info_TEXINFOS = first.texi first_TEXINFOS = gpl.texi EXTRA_DIST = texinfo.tex ---------------------------------------- GNUÀÇ ¹®¼­´Â TeXinfo·Î ¸¸µé¾îÁø´Ù. ???.texi È­ÀÏÀº makeinfo ÇÁ·Î±×·¥À» ÅëÇØ¼­ ???.info¶ó´Â ¿Â¶óÀÎ ¸Å´º¾ó·Î ¸¸µé¾îÁö°í, TeXÀ» ÅëÇØ¼­ ???.dvi¶ó´Â Ã¥À¸·Î Æì³¾ ¼ö ÀÖ´Â hardcopy°¡ ¸¸µé¾îÁø´Ù. GNU Coding Standards¿¡´Â ???.texiÀÇ ¼Ò½º¿Í ???.info È­Àϸ¸ ¹èÆ÷º»¿¡ Æ÷ÇÔÇϵµ·Ï Çϰí ÀÖ´Ù. ±×·¯´Ï±î µû·Î ÁöÁ¤ÇÏÁö ¾Ê´ÂÇÑ ¹®¼­È­ÀÏÀÇ ÃÖÁ¾ Ãâ·Â¹°Àº ???.info È­ÀÏÀÌ´Ù. info_TEXINFOS¿¡ ÇØ´ç ¼Ò½ºÈ­ÀÏÀ» ½á ÁØ´Ù. ¿©·¯°³ÀÏ °æ¿ì ¿©·¯°³¸¦ ½á ÁØ´Ù. °¢°¢ÀÇ È­ÀÏÀº °¢°¢ makeinfo¸¦ ÅëÇØ¼­ °¢°¢ÀÇ ???.info È­ÀÏ·Î ¸¸µé¾îÁú °ÍÀÌ´Ù. ±×·¸Áö ¾Ê°í, ÇÑ È­ÀÏ¿¡¼­ texinfoÀÇ @include ¸í·ÉÀ¸·Î ´Ù¸¥ texinfo È­ÀÏÀ» Æ÷ÇÔÇϰí ÀÖÀ» °æ¿ì first_TEXINFOS¿Í °°ÀÌ ½áÁà¾ß ÇÑ´Ù. firstÀÇ °æ¿ì¿¡´Â GPLÀ» ´ã°í ÀÖ´Â È­ÀÏÀ» Æ÷ÇÔÇÏ´Â ºÎºÐÀÌ ÀÖ´Ù. EXTRA_DIST ¿¡ texinfo.texÀ» ½á ÁÖ¾ú´Ù. À̰ÍÀº automakeÀÇ ¹ö±×°¡ ¾Æ´Ñ°¡ »ý°¢µÈ´Ù. ¹Ýµå½Ã Æ÷ÇÔÇØ¾ß ÇÏ´Â ÀÌ È­ÀÏÀ» ÀÌ·¸°Ô¶óµµ ½á ÁÖÁö ¾ÊÀ¸¸é ÃÖÁ¾ ¹èÆ÷º»¿¡ Æ÷ÇÔµÇÁö ¾Ê´Â´Ù. textutilsÀÇ doc/Makefile.am¿¡µµ ---------------------------------------- # FIXME: remove this when automake has been fixed to include this # file automatically EXTRA_DIST = texinfo.tex ---------------------------------------- °ú °°ÀÌ ¾²¿©Á® ÀÖ´Ù. ¾ÕÀ¸·Î °íÃÄÁú °ÍÀ̶ó°í »ý°¢ÇÑ´Ù. configure.in ÀÛ¼ºÇϱâ ********************* ÀÚ, ÀÌÁ¦ configure.inÀ» ¾²´Â ÀÏÀÌ ³²¾Ò´Ù.. ÀÌ°Ç ±×¸® °£´ÜÄ¡ ¾ÊÀ¸´Ï Á» »ý°¢ÇØ º¸°í ÀÛ¼ºÇØ º¸ÀÚ. configure.inÀº À§ÀÇ Makefile.am°ú´Â ´Þ¸® ÇÁ·Î±×·¥ ¼Ò½ºÄڵ带 ¾î¶»°Ô ÀÛ¼ºÇÏ´À³Ä¿¡ µû¶ó¼­ ½á¾ß ÇÒ ³»¿ëÀÌ ´Þ¶óÁø´Ù. Áï, ¾ó¸¶³ª Äڵ尡 ȣȯ¼º ÀÖ°Ô ¾²¿©Á³´À³Ä, ¾Æ´Ï³Ä¿¡ µû¶ó¼­ configure.in¿¡ ½á¾ß ÇÒ ³»¿ëÀÌ Àû¾îÁö´À³Ä, ¸¹¾ÆÁö´À³Ä°¡ ´Þ·ÁÀÖ´Ù. °æÇèÀÌ ºÎÁ·ÇÑ »ç¶÷Àº ÀÚ±â Äڵ尡 ¾ó¸¶³ª ȣȯ¼ºÀÌ ÁÁ°í, ³ª»ÛÁö ¸ð¸£±â ¶§¹®¿¡ configure.inÀ» Á÷Á¢ ÀÛ¼ºÇÒ ¼ö ¾ø´Ù. ÇÏÁö¸¸, Äڵ带 ¾î¶»°Ô ÀÛ¼ºÇß´À³ÄÀÇ ¹®Á¦´Â ÀÚµ¿À¸·Î ÇØ°áµÈ´Ù. ¾ÕÀÇ ±×¸²¿¡µµ º¸À̵íÀÌ, `autoscan'À» ½ÇÇàÇϸé, ÀÚµ¿À¸·Î ¼­ºêµð·ºÅ丮¸¦ µÚÁö¸é¼­ ÇÊ¿äÇÑ ÇÁ·Î±×·¥, ÇÊ¿äÇÑ config switch¸¦ °Ë»çÇÏ´Â ³»¿ëÀ» configure.scan¿¡ ½á ÁØ´Ù. ÇÏÁö¸¸, autoscanÀº ¿Ïº®ÇÑ °Ô ¾Æ´Ï´Ù. autoscanÀº ±×³É scanÇÏ´Â ¼ø¼­´ë·Î ³»¿ëÀ» ±âÀÔÇÑ´Ù. ¼ø¼­°¡ ¹®Á¦°¡ µÉ ¼öµµ ÀÖ°í, ´õ ÇÊ¿äÇÑ ³»¿ëÀÌ ÀÖÀ» ¼öµµ ÀÖ´Ù.(ÇÏÁö¸¸, ¹ö¸± ³»¿ëÀº ¾ø´Ù.) autoscanÀ» ¸Ç À§ÀÇ µð·ºÅ丮¿¡¼­ ½ÇÇà½Ã۸é ÀÚµ¿À¸·Î ¼­ºêµð·ºÅ丮¸¦ °Ë»öÇϸ鼭 ÇÊ¿äÇÑ °ÍµéÀ» Á¡°ËÇØ ÁØ´Ù. ±×·¡¼­ configure.scanÀÌ ¸¸µé¾îÁø´Ù. ±×·¸°Ô ¸¸µé¾îÁø configure.scanÀ» configure.inÀ¸·Î º¹»çÇÏ°í ±×°ÍÀ» ÆíÁýÇÑ´Ù. ---------------------------------------- dnl Process this file with autoconf to produce a configure script. AC_INIT(src/first.c) AC_PREREQ(2.10) --------------------------------------.. dnl Àº ±× À§Ä¡¿¡¼­ºÎÅÍ newline±îÁö¸¦ comment·Î ó¸®ÇÑ´Ù. configure.scan¿¡ À§¿Í °°Àº ¸Þ¼¼Áö°¡ ¸Ç ù ÁÙ¿¡ ÀûÇô ÀÖÀ» °ÍÀÌ´Ù. ¾Æ¸¶ configure.scan¿¡´Â AC_INIT¾È¿¡ ´Ù¸¥ È­ÀÏ À̸§ÀÌ ÀûÇô ÀÖÀ» °ÍÀÌ´Ù. AC_INIT¿¡¼­ °ýÈ£ ¾ÈÀÇ È­ÀÏÀÌ ÀÖ¾î¾ß¸¸ autoconf°¡ µ¿ÀÛÇÑ´Ù. ÀÌ°Ç ´ÜÁö, ÆÐŰÁö¸¦ ¾Ë¾Æº¸±â À§ÇÑ ¼ö´ÜÀÏ»Ó ±× ÀÌ»óÀº ¾Æ´Ï´Ù. º¸Åë main()ÇÔ¼ö°¡ µé¾î ÀÖ´Â C ¼Ò½º È­ÀÏÀ» ½á ÁØ´Ù. AC_PREREQÀÇ °ýÈ£ ¾È¿¡´Â ÇÊ¿ä·Î ÇÏ´Â autoconfÀÇ ¹öÀüÀ» ½á ÁØ´Ù. ¸¸¾à À̺¸´Ù ¹öÀüÀÌ ³·À» °æ¿ì autoconf´Â ÀÛµ¿ÇÏÁö ¾Ê°Ô µÉ °ÍÀÌ´Ù. autoconf´Â UnixÀÇ Ç¥ÁØ ÇÁ·Î±×·¥ÀÌ ¾Æ´Ï±â ¶§¹®¿¡ ÃֽйöÀüÀ» ½á ÁÖ´õ¶óµµ º° ¹®Á¦°¡ ¾ø´Ù. ..-------------------------------------- AC_CONFIG_HEADER(config.h) --------------------------------------.. config switch°¡ ÇÊ¿äÇÑ °æ¿ì(´ëºÎºÐÀÇ °æ¿ì ÇÊ¿äÇÏ´Ù) ¹Ýµå½Ã ÀÖ¾î¾ß ÇÑ´Ù. ...------------------------------------------- AC_ARG_PROGRAM -------------------------------------------... ¼³Ä¡ÇÒ¶§, ÇÁ·Î±×·¥ÀÇ À̸§À» ¹Ù²Ü ¼ö ÀÖµµ·Ï ÇÑ´Ù. GNU make¸¦ gmake¶ó´Â ½ÇÇàÈ­ÀϸíÀ¸·Î ¼³Ä¡ÇÑ´Ù´ø°¡ ÇÏ´Â °ÍÀ» configure¿É¼Ç¿¡¼­ °áÁ¤ÇÒ ¼ö ÀÖ´Ù. automake´Â ÀÌ°É ¹Ýµå½Ã ÇÊ¿ä·Î ÇÑ´Ù. ..-------------------------------------- PACKAGE=first VERSION=0.1 PACKAGE_VERSION="$PACKAGE-$VERSION" AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE") AC_DEFINE_UNQUOTED(VERSION, "$VERSION") AC_DEFINE_UNQUOTED(PACKAGE_VERSION, "$PACKAGE_VERSION") AC_SUBST(PACKAGE) AC_SUBST(VERSION) AC_SUBST(PACKAGE_VERSION) --------------------------------------.. PACKAGE´Â ÀÌ ÆÐŰÁöÀÇ À̸§À̰í, VERSIONÀº ¹öÀü ¹øÈ£ÀÌ´Ù. PACKAGE_VERSIONÀº ÆÐŰÁö¸í°ú ¹öÀüÀ» ÇÔ²² ¸»ÇÒ¶§ ¾²´Â ¸»À» ¾´´Ù. $PACKAGE¶ó°í ¾²¸é, À§¿¡¼­ Á¤ÀÇÇÑ PACKAGEº¯¼ö¸¦ ½½ ¼ö ÀÖ´Ù. $VERSIONµµ ¸¶Âù°¡ÁöÀÌ´Ù. ÀÌ º¯¼ö¸¦ µû·Î µÒÀ¸·Î½á ÁÁÀº Á¡µµ ÀÖ´Ù. ¿¹¸¦ µé¾î¼­ textutilsÀÇ °æ¿ì PACKAGE´Â textutils, VERSIONÀº 1.19, PACKAGE_VERSIONÀº "GNU $PACKAGE-$VERSION"À¸·Î µÇ¾î ÀÖ´Ù. GNU¶ó´Â ¸»À» ¾Õ¿¡ ºÙÀÏ ¼ö ÀÖ´Ù. AC_DEFINE_UNQUOTED´Â config.h¿¡ ---------------------------------------- #define PACKAGE "first" #define VERSION "0.1" #define PACKAGE_VERSION "first-0.1" ---------------------------------------- À̶ó°í Á¤ÀÇÇϵµ·Ï ÇÑ´Ù. AC_DEFINE_UNQUOTED(a, b)´Â config.h¿¡¼­ (ȤÀº AC_CONFIG_HEADER¿¡¼­ Á¤ÀÇÇÑ ¾î¶² È­ÀÏÀ̵ç a¸¦ b·Î #defineÇÏ°Ô ÇÑ´Ù. UNQUOTED°¡ ¾ø´Â AC_DEFINEÀ̶ó´Â ¸í·Éµµ Àִµ¥ UNQUOTED¸¦ ºÙ¿©ÁÜÀ¸·Î½á ³»ºÎ¿¡ $·Î ½ÃÀ۵Ǵ º¯¼ö¸íÀ̶óµçÁö, ``·Î ¹­¿©Áø ¼Ð ¸í·É, escape¹®ÀÚ \(backslash)¸¦ ¾µ ¼ö ÀÖ´Ù. AC_SUBST´Â AC_DEFINE_UNQUOTED¿Í ºñ½ÁÇÑ ÀÏÀ» ÇÑ´Ù. ÀÌ ¸ÅÅ©·Î´Â Makefile.inÀÇ ³»¿ëÀ» ¹Ù²Û´Ù. ¾Õ¿¡¼­ ¾ð±ÞÇßµíÀÌ Makefile.inÀÌ Makefile°ú ´Ù¸¥ Á¡Àº @¾î¼±¸@¿Í °°Àº ºÎºÐÀÌ ÀÖ´Ù´Â °ÍÀÌ´Ù. À§ÀÇ ¿¹¿¡¼­´Â °¢°¢ @PACKAGE@, @VERSION@, @PACKAGE_VERSION@À̶ó°í µÇ¾î ÀÖ´Â ºÎºÐÀ» ÇØ´ç º¯¼ö°ªÀ¸·Î ġȯÇÑ´Ù. ..-------------------------------------- dnl Checks for programs. AC_PROG_CC AC_PROG_INSTALL AC_PROG_LN_S AC_PROG_RANLIB AC_PROG_MAKE_SET ---------------------------------------.. AC_PROG_...´Â ƯÁ¤ ÇÁ·Î±×·¥ÀÌ ÀÌ ½Ã½ºÅÛ¿¡ Á¸ÀçÇÏ´ÂÁö °Ë»çÇÏ´Â ¸ÅÅ©·ÎÀÌ´Ù. ¿¹¸¦ µé¾î AC_PROG_CC´Â ÀÏ´Ü gcc°¡ ÀÖ´ÂÁö °Ë»çÇϰí, ÀÖÀ¸¸é ±×°É »ç¿ëÇϰí, ¾øÀ¸¸é cc¸¦ »ç¿ëÇÑ´Ù. configure.scan¿¡¼­´Â ¸Ç À§ÀÇ 4°¡Áö¹Û¿¡ ¾øÀ» °ÍÀÌ´Ù. AC_PROG_MAKE_SETÀº ±× ÆÐŰÁö¿¡ ¼­ºêµð·ºÅ丮°¡ ÀÖÀ»¶§, Áï deepÀ̳ª shallowÀÇ °æ¿ì¿¡ ¹Ýµå½Ã ÇÊ¿äÇÏ´Ù. ÀÌ °æ¿ì recursiveÇÏ°Ô make¸¦ callÇØ¾ß Çϴµ¥, ±×¶§ MakefileÀÇ `MAKE'º¯¼ö°¡ Á¤ÀǵÇÁö ¾ÊÀº ±¸¹öÀüÀÇ make¸¦ À§ÇØ Á¸ÀçÇÑ´Ù. ..-------------------------------------- dnl This test must precede tests of compiler characteristics like dnl that for the inline keyword, since it may change the degree to dnl which the compiler supports such features. fp_C_PROTOTYPES --------------------------------------.. ANSI C¸¦ »ç¿ëÇÏ·Á¸é ÀÌ°Ô ¹Ýµå½Ã ÇÊ¿äÇÏ´Ù. ¿Ö³ÄÇϸé, ÀÏ´Ü configure ½ºÅ©¸³Æ®¸¦ ÅëÇØ¼­ ÀÌ C ÄÄÆÄÀÏ·¯°¡ ANSI C¸¦ Áö¿øÇÏ´ÂÁö ¾Ë¾Æº¸°í, ansi2knrÀ» »ç¿ëÇÒ °ÍÀÎÁö, ¾Æ´ÒÁö¸¦ °áÁ¤ÇØ¾ß Çϱ⠶§¹®ÀÌ´Ù. ÀÌ ¸ÅÅ©·Î´Â ÀÌ ÄÄÆÄÀÏ·¯°¡ ANSI CÀÇ prototypeÀ» Áö¿øÇÏ´ÂÁö ¾Ë¾Æº»´Ù. ÀÌ ¸ÅÅ©·Î´Â fp_·Î ½ÃÀ۵Ǵµ¥ À̰ÍÀº ÀÌ ¸ÅÅ©·Î¸¦ ¸¸µç »ç¶÷ÀÇ À̸§À» µý °ÍÀÌ´Ù. autoconf¿¡¼­ ±âº»ÀûÀ¸·Î Á¦°øÇÏ´Â ¸ÅÅ©·Î´Â AC_°¡ ºÙ´Â´Ù. ÀÌ ¸ÅÅ©·Î´Â ¾Æ±î º¹»çÇÑ aclocal.m4¿¡ µé¾îÀÖ´Â ¸ÅÅ©·ÎÀÌ´Ù. Áß°£¿¡ ´õ ÀÖ¾î¾ß ÇÒ °ÍÀÌ ÀÖ´Ù¸é, ±×°ÍÀº ¸ðµÎ autoscan¿¡ ÀÇÇØ¼­ ÀÚµ¿À¸·Î ÆÄ¾ÇµÉ ¼ö ÀÖ´Â °ÍµéÀÌ´Ù. ¶óÀ̺귯¸®, Çì´õ È­ÀÏ, ÇÔ¼ö¿Í °°Àº Å×½ºÆ®°¡ Áß°£¿¡ µé¾î°¡°Ô µÉ °ÍÀÌ´Ù. »ç½Ç ÀÌ ºÎºÐÀÌ È£È¯¼º º¸ÀåÀ» À§Çؼ­ Áß¿äÇÑ ºÎºÐÀÌ´Ù. Áß°£»ý·«... ...--------------------------------------------- AC_OUTPUT(Makefile src/Makefile lib/Makefile doc/Makefile) ------------------------------------------------ ÀÚ, ÀÌÁ¦ ³¡ÀÌ´Ù. ÆÐŰÁö ¾È¿¡¼­ ¸¸µé¾î¾ß µÉ MakefileÀ» ¸ðµÎ ½á ÁÖÀÚ. ±×¿Ü¿¡ ÀÛ¼ºÇÒ °Íµé ****************** ÀÚ, ¶Ç ÇÊ¿äÇÑ È­ÀÏÀÌ 2°³°¡ ÀÖ´Ù. ¿Ö À̸® ÇÊ¿äÇÑ °Ô ¸¹ÀºÁö... config.h.inÀÌ ÇÊ¿äÇÏ´Ù. ÇÏÁö¸¸, ¾Õ¿¡¼­ ºÃµíÀÌ ÀÌ°Ç ¼ÕÀ¸·Î ¸¸µé Çʿ䰡 ¾ø´Ù. ±×³É °£´ÜÈ÷ `autoheader'¸¦ ½ÇÇàÇÏÀÚ. Àá½ÃÈÄ¿¡ config.h.inÀÌ »ý°åÀ» °ÍÀÌ´Ù. ¶Ç Çϳª ¼ö°í¸¦ ÇØ Áà¾ß ÇÒ È­ÀÏÀÌ acconfig.hÀÌ´Ù. ------------------------------------------------ /* Define to the name of the distribution. */ #undef PACKAGE /* The concatenation of the strings PACKAGE, "-", and VERSION. */ #undef PACKAGE_VERSION /* Define to the version of the distribution. */ #undef VERSION /* Define to 1 if ANSI function prototypes are usable. */ #undef PROTOTYPES ------------------------------------------------ config.h.in°ú acconfig.h´Â ±× ±â´ÉÀÌ ¶È°°´Ù. #undef <¸ÅÅ©·Î>¶ó°í ½á ÁÖ¸é, ³ªÁß¿¡ configure½ºÅ©¸³Æ®°¡ ¾Ë¾Æ¼­ #define <¸ÅÅ©·Î> <¾î¼±¸>¶ó°í ¹Ù²Ù¾î ÁØ´Ù. ´ÜÁö config.h.inÀº ÀÚµ¿À¸·Î ¸¸µå´Â °ÍÀÌ´Ï±î ¿¡µðÆ®ÇÏÁö ¸»°í, acconfig.h¸¸À» ¿¡µðÆ®ÇÑ´Ù. PACKAGE, PACKAGE_VERSION, VERSION, ±×¸®°í PROTOTYPES¶ó´Â ¸ÅÅ©·Î¸¦ Á¤ÀÇÇØ ÁØ´Ù. À§ÀÇ configure.in¿¡¼­ ÀÌ ºÎºÐÀ» ÇØ´ç ÆÐŰÁö À̸§°ú ¹öÀüÀ¸·Î ´ëüÇÏ´Â AC_DEFINE_UNQUOTED¶ó´Â ºÎºÐÀÌ ÀÖ´Ù. ±× ¸ÅÅ©·Î¿¡ ÀÇÇØ¼­ À§¿¡ ¾²¿©Áø #undef ºÎºÐÀº #define¹®À¸·Î ¹Ù²î¾î config.h¿¡ ¾²¿©Áø´Ù. VERSIONÀº "0.1"·Î, PACKAGE´Â "first"·Î Á¤ÀÇµÉ °ÍÀÌ´Ù. ±×¸®°í ¸Ç ¸¶Áö¸·ÀÇ PROTOTYPES´Â fp_C_PROTOTYPES ¸ÅÅ©·Î¿¡¼­ ÇÊ¿ä·Î ÇÏ´Â °ÍÀ¸·Î, ANSI ¹æ½ÄÀÇ ÇÔ¼ö prototypeÀÌ °¡´ÉÇÒ °æ¿ì 1·Î Á¤ÀǵȴÙ. ¸¶Áö¸·À¸·Î ¶Ç ÇѰ³ È­ÀÏÀ» ÀÛ¼ºÇØ¾ß ÇÑ´Ù. stamp-h.inÀÌ´Ù. .inÀÌ ºÙÀº °ÍÀ¸·Î ÁüÀÛÇϰÚÁö¸¸, ÀÌ È­ÀÏ¿¡ ÀÇÇØ stamp-h°¡ ¸¸µé¾îÁø´Ù. ÀÌ È­ÀÏÀº config.h°¡ ¾ðÁ¦ ¸¸µé¾îÁ³´À³Ä¸¦ ±â·ÏÇÏ´Â ¼ö´ÜÀÏ »ÓÀÌ´Ù. ÀÌ È­ÀÏ¿¡ timestamp¶ó´Â 9ÀÚ¸¦ ½á ³Ö´Â´Ù. ---------------------------------------- echo "timestamp" >stamp-h.in ---------------------------------------- ÀÌ È­ÀÏÀÇ º¯°æ³¯Â¥°¡ °ð config.h°¡ ¸¸µé¾îÁø ½Ã°¢ÀÌ´Ù. ¡º¸®´ª½º Çдç-¸®´ª½º °­Á / ¿¬Àç (go LINUX)¡» 335¹ø Á¦ ¸ñ:GNUtic -- Autoconf/Automake <3> ¿Ã¸°ÀÌ:onestep (·ùâ±Õ ) 96/10/05 05:27 ÀÐÀ½:1501 °ü·ÃÀÚ·á ¾øÀ½ ----------------------------------------------------------------------------- °á°ú ¸Àº¸±â *********** ÀÌÁ¦ automake¸¦ ½ÇÇàÇØ º¸ÀÚ. Á¦´ë·Î À§ °úÁ¤À» °ÅÃÆ´Ù¸é ¹«³­È÷ Makefile.inÀ» ¸¸µé¾î³¾ °ÍÀÌ´Ù. ±×·±µ¥ º»ÀÎÀÇ ½Ã½ºÅÛ¿¡¼­ automake¸¦ locale °ü·Ã °æ°í ¸Þ¼¼Áö°¡ ³ª¿Ô´Ù. ´Ù¸¥ ÆÐŰÁöÀÇ °æ¿ì¿¡µµ °æ°í¸¦ ³»´Â °ÍÀ» º¸¸é automakeÀÇ ¹®Á¦´Â ¾Æ´Ï°í ÀÌ ½Ã½ºÅÛÀÇ ¹®Á¦ÀÎ °Í °°¾Ò´Ù. µ¥ºñ¾ÈÀ» ¾²°í Àִµ¥ ½½·¢¿þ¾î³ª ´Ù¸¥ ¹èÆ÷º»À» »ç¿ëÇÏ°í °è½Å ºÐÀº ¾î¶²Áö ¸ð¸£°Ú´Ù. ¾Ñ, ±×·¯°í º¸´Ï, ÀÌ¹Ì automake¸¦ ½ÇÇàÇß´Ù. ±×·¯¸é autoconf¸¦ ½ÇÇàÇÏÀÚ. ¹«½¼ È­ÀÏÀÌ ¾ø´Ù´Â ¸Þ¼¼Áö°¡ ³ª¿À¸é, configure.in¿¡¼­ AC_INITÀ¸·Î ¼³Á¤ÇÑ È­ÀÏÀÌ ¾ø±â ¶§¹®ÀÌ´Ù. ¾î¶² ¹æ¹ýÀ¸·Îµç ±× È­ÀÏÀ» ¸¸µé¾î ³õÀÚ. ±×·¯¸é ¹®Á¦ ¾øÀÌ autoconf°¡ ³¡³¯ °ÍÀÌ´Ù. ±×·¯¸é.. µåµð¾î configure ½ºÅ©¸³Æ®¸¦ ¸¸µé¾î ³»¾ú´Ù. configure¸¦ ½ÇÇàÇØ º¸ÀÚ. ¿©·¯°¡Áö ÇÁ·Î±×·¥µéÀ» °Ë»çÇϰí, °ð, °¢ ¼­ºêµð·ºÅ丮¸¶´Ù MakefileÀ» ¸¸µé¾î ³¾ °ÍÀÌ´Ù. ±×¸®°í `make'¸¦ ½ÇÇàÇϸé, ÄÄÆÄÀÏÀÌ µÉ °ÍÀÌ´Ù. ±×·¯³ª, ¹°·Ð ±× Àü¿¡ ÇÁ·Î±×·¥À» ¸¸µé¾î¾ß ÇÑ´Ù. ÀÌÁ¦ ÇÒÀÏÀº ³¡³µ´Ù. C ÇÁ·Î±×·¥À» Á÷Á¢ ÀÛ¼ºÇÒ Â÷·ÊÀÌ´Ù. firstÀÇ °æ¿ì¿¡´Â first.c, fileblock.c ±×¸®°í fileblock.h¸¦ ÀÛ¼ºÇß´Ù. ÇÁ·Î±×·¥À» ¸¸µé¸é automake¸¦ ´Ù½Ã ½ÇÇàÇÏ´Â °ÍÀÌ ÁÁ´Ù. ¿Ö³ÄÇϸé first.c¿¡¼­ fileblock.h¸¦ #include ÇÏ´Â ºÎºÐÀÌ Á¸ÀçÇϴµ¥ automake°¡ À̰ÍÀ» ¾Ë¾ÆÃ¤°í ÀÇÁ¸¼ºÀ» Makefile.in¿¡ Ãß°¡Çϵµ·Ï ÇØ¾ß Çϱ⠶§¹®ÀÌ´Ù. ½ÇÁ¦·Î ¸¸µé¾îÁø Makefile.inÀ» º¸¸é ÀÇÁ¸¼ºÀÌ ¾ø´Â °ÍÀ» º¸°í Àǹ®À» °¡ÁúÁöµµ ¸ð¸£°Ú´Ù. Á÷Á¢ automake¸¦ ½ÇÇàÇßÀ» ¶§´Â Makefile.in ³»¿¡ ¸¸µéÁö ¾Ê´Â´Ù. ¿Ö³ÄÇϸé, °³¹ßÁßÀ̱⠶§¹®¿¡ ÀÇÁ¸¼ºÀÌ °è¼ÓÇØ¼­ °ÍÀ̱⠶§¹®ÀÌ´Ù. ´ë½Å¿¡ src µð·ºÅ丮¿¡ º¸¸é .deps¶ó´Â µð·ºÅ丮°¡ ÀÖ°í, ±× ¾È¿¡ Á¤º¸°¡ ÀÖ´Â °ÍÀ» ¾Ë ¼ö ÀÖ´Ù. Makefile.in¿¡ Á¤º¸°¡ µé¾î°¡µµ·Ï ÇÏ·Á¸é --include-deps ¿É¼ÇÀ» ºÙÀδÙ. `make dist'·Î ¼Ò½º ¹èÆ÷º»À» ¸¸µé¶§´Â ÀÌ ¿É¼ÇÀ» ºÙ¿©¼­ ´Ù½Ã automake°¡ ½ÇÇàµÈ´Ù. ÃÖÁ¾ÀûÀÎ ¹èÆ÷º»¿¡´Â Makefile.in¿¡ ÀÌ Á¤º¸°¡ Æ÷ÇԵȴÙ. `make dist'¸¦ ÇØ º¸ÀÚ. ±×·¯¸é ÇÑÂü ÈÄ¿¡ ¸Ç »óÀ§ µð·ºÅ丮¿¡ first-0.1.tar.gzÀ̶ó´Â È­ÀÏÀÌ »ý±æ °ÍÀÌ´Ù. Áï, ÀÌ µð·ºÅ丮¿¡¼­ ÇÑÂüµ¿¾È ÀÛ¾÷ÇÑ ÈÄ¿¡ `make clean'ÇÏ°í ¾ÐÃàÇÒ ÇÊ¿ä¾øÀÌ ¹Ù·Î releaseÇÒ ¼ö ÀÖ´Â ÆÐŰÁö¸¦ ¸¸µé¾î ³¾ ¼ö ÀÖ´Â °ÍÀÌ´Ù. À̰ÍÀ¸·Î ÀÏ·ÃÀÇ °úÁ¤Àº ³¡³µ´Ù. ½¬¾î°¡±â -- ÆíÇØÁö°í ½ÍÀº Àΰ£ÀÇ ¸¶À½ ************************************* óÀ½¿¡ GNU ÇÁ·Î±×·¥µéÀº ÀÌ·± Æí¸®ÇÑ ¼³Ä¡µµ±¸°¡ ¾ø¾ú´Ù. ±×³É Makefile¸¸ ´Þ¶û ÀÖ¾ú°í, ´Ù¸¥ ȯ°æ¿¡ Æ÷ÆÃÇϱâ À§Çؼ­ MakefileÀ» Á÷Á¢ ¿¡µðÆ®ÇØ¾ß Çß´Ù. ±× ´ëºÎºÐÀº ÄÄÆÄÀϽÿ¡ -D ½ºÀ§Ä¡¸¦(define) ¸ÂÃçÁÖ´Â °ÍÀ̾ú´Ù. µû¶ó¼­ ÄÄÆÄÀÏÇÒ¶§ º¸¸é ¾öû³ª°Ô ¸¹Àº -D ½ºÀ§Ä¡°¡ ºÙ¾î ÀÖ¾ú´Ù. autoconf¸¦ ¸¸µç »ç¶÷Àº ±× ´ç½Ã¿¡ fileutils¸¦ maintainÇϰí ÀÖ¾ú´Âµ¥ ÀÌ·±°Ô ±ÍÂú¾Æ¼­ ¸î°¡Áö ¼¼ÆÃÀ» ÀÚµ¿À¸·Î ¸ÂÃß¾î ÁÖ´Â ½ºÅ©¸³Æ®¸¦ ¸¸µé¾î¼­ fileutils 2.0°ú ÇÔ²² ¹ßÇ¥Çß´Ù. ±×°ÍÀÌ ¹Ù·Î configure ½ºÅ©¸³Æ®ÀÇ Åº»ýÀ̾ú´Ù. Makefile.inÀ» Ʋ·Î ÇØ¼­ MakefileÀ» ¸¸µé¾î³»´Â °ÍÀ̾ú´Ù. configure ½ºÅ©¸³Æ®´Â °è¼Ó ¹ßÀüÇßÀ¸³ª, ¹®Á¦´Â configure´Â ¼Ð ½ºÅ©¸³Æ®¿´Áö¸¸ ³Ê¹« ¾î·Á¿ü´Ù´Â Á¡ÀÌ´Ù. ±×·¡¼­ configure.inÀ» Ʋ·Î ÇØ¼­ configure½ºÅ©¸³Æ®¸¦ ÀÚµ¿À¸·Î ¸¸µé¾î ³»´Â µµ±¸¸¦ ¸¸µé¾ú´Ù. ±×°ÍÀÌ autoconfÀÌ´Ù. autoconfµµ ¹ßÀüÇØ¼­ ÀÌÁ¦ ¾î¶² config switch°¡ ÇÊ¿äÇÑÁö ÀÏÀÏÀÌ °Ë»çÇÒ Çʿ䰡 ¾øÀÌ °ÅÀÇ ¸ðµç °úÁ¤À» ÀÚµ¿À¸·Î ¼öÇàÇÒ ¼ö ÀÖ¾ú´Ù. ÇÏÁö¸¸, autoconf´Â config switch¸¦ ¸ÂÃß¾îÁÖ´Â ¼ö°í¸¦ ´ú¾úÀ» »ÓÀÌÁö MakefileÀÇ º¹ÀâÇÔ ÀÚü¸¦ ´ú¾îÁÖÁö´Â ¸øÇß´Ù. Makefile.inµµ ¾ÆÁ÷ ¾î·Æ°í, ÀÛ¼ºÇÏ·Á¸é ÇÑÂüÀ» °í»ýÇØ¾ß ÇÑ´Ù. ±×¸®°í, ÆÐŰÁö ±¸¼ºÀÌ Á¶±Ý¸¸ ´Þ¶óÁ®µµ ¼öÁ¤ÇÏ´Â µ¥ ¾î·Á¿òÀÌ »ý°å´Ù. ±×·¡¼­ Makefile.inÀ» ÀÚµ¿À¸·Î ¸¸µé¾î ÁÖ´Â automake°¡ ÃÖ±Ù¿¡ ¹ßÇ¥µÈ °ÍÀÌ´Ù. automake´Â Æí¸®ÇÑ µµ±¸À̱ä ÇÏÁö¸¸, Æí¸®ÇÑ ¸¸Å­ öÀúÇÏ°Ô automakeÀÇ ¹æ½ÄÀ» µû¶ó¾ß ÇÑ´Ù´Â ¹®Á¦Á¡ÀÌ ÀÖ´Ù. ´Ù¸¥ È­ÀÏÀ̸§À» ¾²°í ½Í°Å³ª, ¼³Ä¡ ¹æ½ÄÀ» ´Ù¸£°Ô ÇÏ°í ½ÍÀ¸¸é ±×°Ç °³¹ßÀÚ°¡ Á÷Á¢ ¸¸µé¾î¾ß ÇÑ´Ù. ÀÌ ¹æ½ÄÀ» µû¸£ÀÚ. ±×·¯±â ½È´Ù¸é ±×°ÍÀº °í»ýÀ» ÀÚÃÊÇÏ´Â ±æÀÌ´Ù. ¹öÀü ¹®Á¦ÀÇ ÇØ°á **************** ¸ðµç GNU programÀº ´ÙÀ½ 2°¡Áö ¿É¼ÇÀ» °¡Áö°í ÀÖ´Ù. ù¹øÂ°°¡ --helpÀ̰í, ¶Ç Çϳª°¡ --versionÀÌ´Ù. (±×·±µ¥ ¿Ö GCC´Â --help°¡ ¾ÈµÇÁö?) À̰͵µ ÇϳªÀÇ ±ÔÄ¢ÀÌ´Ù. ¸¸µé°í ÀÖ´Â ÇÁ·Î±×·¥Àº ¹Ýµå½Ã ÀÌ µÎ ¿É¼ÇÀ» °¡Áö°í ÀÖ¾î¾ß ÇÑ´Ù. ¿ì¸®°¡ »ý°¢ÇØ º¼ ¹®Á¦´Â --versionÀÇ °æ¿ìÀÌ´Ù. --version ¿É¼ÇÀ» Á༭ ÀÌ ÇÁ·Î±×·¥ÀÇ ¹öÀüÀÌ ¸îÀΰ¡¸¦ Ç¥½ÃÇÒ ¼ö ÀÖ´Ù´Â ¾ê±â´Â ¾îµò°¡ version°ú °ü·ÃµÈ stringÀ» °¡Áö°í ÀÖ´Ù´Â ¾ê±â°¡ µÈ´Ù. GNU programµéÀº ÀÌ version string ¹®Á¦¸¦ ¿©·¯°¡Áö ¹æ¹ýÀ¸·Î ÇØ°áÇϰí ÀÖ´Ù. `hello'¿Í °°Àº ÇÁ·Î±×·¥Àº version.c¶ó´Â È­ÀÏÀÌ ÀÖ´Ù. ±×°÷¿¡¼­ `char version[] = "GNU Hello, version 1.3";'À̶ó°í ¼±¾ðÇØ ÁÖ°í ÀÖ´Ù. ¹Ý¸é, fileutils°°Àº °æ¿ì´Â ¿ÀÁ÷ configure.in¿¡¼­ `VERSION=3.13'À̶ó´Â ¶óÀÎÀÌ ÀÖÀ» »ÓÀÌ´Ù. ±×¸®°í configure ½ºÅ©¸³Æ®¸¦ ½ÇÇà½Ã۸é ÀÚµ¿À¸·Î »ý¼ºµÇ´Â `config.h'¶ó´Â È­ÀÏ¿¡ `#define PACKAGE_VERSION "GNU fileutils-3.13"'¶ó°í µÇ¾î ÀÖ¾î Á÷Á¢ PACKAGE_VERSIONÀ̶ó´Â ¸ÅÅ©·Î¸¦ ¾²µµ·Ï Çϰí ÀÖ´Ù. ¾î´ÀÂÊÀ» ÅÃÇØ¾ß Çϰڴ°¡? ÀÌ°Ç ¼±ÅÃÀÇ ¿©Áö°¡ ¾ø´Ù. ´ç¿¬È÷ ÈÄÀÚ¸¦ ÅÃÇØÇá ÇÑ´Ù. ÈÄÀÚ´Â ÀüÀÚ¿¡ ºñÇØ ¸¹Àº ÀåÁ¡À» °¡Áö°í ÀÖ´Ù. versionÀ» ³ôÀÌ°í ³·Ãß°íÀÇ ¹®Á¦´Â ÇÁ·Î±×·¡¹ÖÀÇ Â÷¿øÀÌ ¾Æ´Ï¶ó, ÆÐŰÁö °ü¸®ÀÇ Â÷¿øÀÌ´Ù. ÆÐŰÁö °ü¸® ¾÷¹«¿¡¼­ version.c¶ó´Â C ¼Ò½ºÄڵ带 ¿¡µðÆ®ÇØ¾ß ÇÑ´Ù´Â °Ô ¾ó¸¶³ª ¿ô±ä ÀÏÀΰ¡? ¶Ç fileutilsÀÇ °æ¿ì´Â config.h»Ó¸¸ ¾Æ´Ï¶ó doc/µð·ºÅ丮¿¡ version.texi¶ó´Â È­Àϵµ ¸¸µé¾î ³½´Ù. ¿ª½Ã versionÀÌ ¾²¿© ÀÖ´Â ´Ü¼øÇÑ ¸ÅÅ©·ÎÀÏ »ÓÀÌ´Ù. ÀÌ È­ÀÏÀº ±× ÆÐŰÁöÀÇ ¹®¼­ÀÇ version¿¡ °ü°èµÈ´Ù. ÇѰ³ÀÇ configure.in È­ÀÏÀ» ¹Ù²ÞÀ¸·Î½á ÀÌ·± È¿°ú¸¦ °ÅµÑ ¼ö ÀÖ´Ù. ÀÚ, À§¿¡¼­ ¿ì¸®´Â PACKAGE, VERSION, PACKAGE_VERSIONÀ̶ó´Â ¼¼°³ÀÇ ¸ÅÅ©·Î¸¦ °¡Áö°í, ¸¹ÀÌ °í»ýÀ» Çß¾ú´Ù. ±× °í»ýÀÇ °á°ú »ý¼ºµÈ config.h¿¡´Â ÀÌ ¼¼°³ÀÇ ¸ÅÅ©·Î¿¡ ´ëÇØ¼­ #defineÇÑ ¶óÀÎÀÌ µé¾î ÀÖÀ» °ÍÀÌ´Ù. ´ÙÀ½Àº first.cÀÇ --version ¿É¼Ç¿¡ ´ëÇÑ Ã³¸® ºÎºÐÀÌ´Ù. ¹°·Ð ¿É¼Ç 󸮴 getopt ¶óÀ̺귯¸®¸¦ »ç¿ëÇß´Ù. ----------------------------------------------- if (show_version) { printf ("%s\n", PACKAGE_VERSION); exit (0); } ----------------------------------------------- TeXinfo¸¦ »ç¿ëÇÒ ÁÙ ¾Æ´Â µ¶ÀÚ¿¡°Ô¸¸ ÇØ´çµÇ´Â ¾ê±â... ±»ÀÌ ¸ð¸£´õ¶óµµ º¸°í ³Ñ¾î°¥ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ¸Å´º¾ó¿¡µµ ±× ÇÁ·Î±×·¥ÀÇ ¹öÀüÀÌ µé¾î°£´Ù. ¸Å¹ø ¹öÀüÀÌ ¹Ù²ð ¶§¸¶´Ù ã¾Æ°¡¼­ ¹Ù²Ù´Â °Íµµ ±ÍÂúÀº ÀÏÀ̰í, ÆÐŰÁö °ü¸® Â÷¿ø¿¡¼­ ÇÒ ÀÏÀÌ´Ù. automake´Â version.texi¸¦ ÇØ´ç .texi(À§ÀÇ ¿¹¿¡¼­´Â first.texi)¿¡¼­ @include ¸í·ÉÀ¸·Î `Æ÷ÇÔ'Çϵµ·Ï Çϰí ÀÖ´Ù. version.texi¿¡´Â ´ÙÀ½ ¼¼°³ÀÇ ¸ÅÅ©·Î°¡ Á¤ÀǵǾî ÀÖ´Ù. UPDATED EDITION VERSION UPDATED´Â ÃÖÁ¾ º¯°æµÈ ³¯Â¥, VERSIONÀº ÇØ´ç ÇÁ·Î±×·¥ÀÇ ¹öÀü, EDITIONÀº ÀÌ ¸Å´º¾óÀÇ ¹öÀüÀ» ¸»ÇÑ´Ù. ¸Å´º¾ó¿¡¼­ @value{VERSION}°ú °°ÀÌ »ç¿ëÇÏ¸é µÈ´Ù. ´ÙÀ½Àº first.texiÀÇ Ç¥Áö¿¡ ¾²ÀÎ À§ÀÇ ¸ÅÅ©·ÎÀÌ´Ù. ------------------------------------------------- @titlepage @title @code{first} @subtitle Example of autoconf/automake @subtitle for version @value{VERSION}, @value{UPDATED} @author Changwoo Ryu ------------------------------------------------- automake´Â À§¿Í °°ÀÌ version.texi¸¦ @includeÇÏ´Â ºÎºÐÀÌ ¾øÀ¸¸é, version.texi¸¦ ¸¸µéÁö ¾Ê´Â´Ù. ±×·¯¸é À§¿¡¼­ AC_SUBST·Î Makefile.inÀÇ ³»¿ëÀ» ¼öÁ¤Çߴµ¥ ±×°Ç ¾îµð¿¡ ¾²Àϱî? ¸ÕÀú `make dist'¿¡¼­ ¸¸µé¾î³»¾ß ÇÒ È­ÀÏÀÌ `first-0.1.tar.gz'À̶ó´Â °ÍÀ» ¾Ë±â À§Çؼ­ÀÌ´Ù. ¶Ç GNU ÇÁ·Î±×·¥ÀÌ ½ÇÇàÈ­ÀÏ À̿ܿ¡ µ¥ÀÌŸ¸¦ ÇÊ¿ä·Î ÇÒ¶§ µ¥ÀÌŸ¸¦ ã´Â µð·ºÅ丮¸íÀÌ µÇ±âµµ ÇÑ´Ù. EmacsÀÇ °æ¿ì´Â .../share/emacs À̰í, automakeÀÇ °æ¿ì´Â .../share/automakeÀÌ´Ù. µ¥ÀÌŸ¸¦ ¼³Ä¡ÇÒ¶§ ÇØ´ç µð·ºÅ丮·Î º¹»çÇÒ ¼ö ÀÖµµ·Ï ÇÑ´Ù. PortablilityÀÇ °í·Á ******************* ÀÚ, ³Ê¹« ÆíÇÑ °Í¸¸ ã¾Ò³ª º¸´Ù. ÀÌÁ¦ Á» °ñÄ¡¾ÆÇ ¹®Á¦ÀÎ Æ÷ÆÃ¿¡ ´ëÇØ¼­ °£´ÜÈ÷ »ý°¢ÇØ º¸ÀÚ. autoconf¸¦ »ç¿ëÇÏ´Â ÀÌÀ¯´Â Æ÷ÆÃÀ» ¿øÈ°È÷ ÇÒ ¼ö ÀÖ°Ô Çϱâ À§Çؼ­ÀÌ´Ù. ¿©·¯ ½Ã½ºÅÛ¿¡ °æÇèÀÌ ¾ø´Ù¸é, ÀÏ´Ü, Äڵ带 ½á ³»·Á ³ª°¡ÀÚ. ±×¸®°í, autoscanÀ¸·Î ÀÚ½ÅÀÇ Äڵ忡 system-dependentÇÑ ºÎºÐÀÌ ¾î¶² °ÍµéÀÌ ÀÖ´ÂÁö ¾Ë¾Æº»´Ù. ±×¸®°í, ÇØ´ç ºÎºÐÀ» °íÃÄ ³ª°£´Ù. ÇÁ·Î±×·¥ÀÌ Ä¿Áö¸é, Ä¿Áú ¼ö·Ï ÀÌ ¹®Á¦´Â Ä¿Áø´Ù. ƯÁ¤ Çì´õ È­ÀÏ Çϳª #includeÇÏ´Â µ¥µµ, ÀÌ È­ÀÏÀÌ ÀÖ´ÂÁö ¾ø´ÂÁö¸¦ ³ªÅ¸³»´Â ¸ÅÅ©·Î¸¦ »ìÆìº¸¾Æ¾ß ÇÑ´Ù. ƯÁ¤ ÇÔ¼ö°¡ ¾ø´Â °æ¿ìµµ °Ë»çÇØ¼­ ¾øÀ» °æ¿ì´Â ´Ù¸¥ ¹æ¹ýÀ¸·Î ±¸ÇöÇÒ ÁÙµµ ¾Ë¾Æ¾ß ÇÑ´Ù. ÀÌ°Ç °æÇè»óÀÇ ¹®Á¦ÀÎ °Í °°´Ù. ´ÙÀ½Àº fileutilsÀÇ ls.cÀÇ ÀϺκÐÀÌ´Ù. ----------------------------------------------- #ifdef S_ISLNK if (S_ISLNK (files[files_index].stat.st_mode)) files[files_index].filetype = symbolic_link; else #endif ----------------------------------------------- ÀÌ»óÇÏ°Ô »ý°¢ÇÒ Áöµµ ¸ð¸£Áö¸¸, ½Éº¼¸¯ ¸µÅ©¶ó´Â °Ô Á¸ÀçÇÏÁöµµ ¾Ê´Â Unix ½Ã½ºÅÛÀÌ ÀÖ´Ù. ±×·¡¼­ S_ISLNK¶ó´Â ½Éº¼¸¯ ¸µÅ©ÀÎÁö¸¦ °Ë»çÇÏ´Â ¸ÅÅ©·Î°¡ Á¸ÀçÇÏ´ÂÁö ¾Æ´ÑÁöµµ °Ë»çÇØ¾ß ÇÑ´Ù. À§ÀÇ ¿¹´Â autoconf¾øÀ̵µ ÇÒ ¼ö ÀÖ´Â ºÎºÐÀÌ´Ù. ÇÏÁö¸¸, ´ÙÀ½°ú °°Àº °æ¿ì´Â ¾î¶²°¡? ----------------------------------------------- #if HAVE_LIMITS_H /* limits.h must come before system.h because limits.h on some systems undefs PATH_MAX, whereas system.h includes pathmax.h which sets PATH_MAX. */ # include #endif ----------------------------------------------- À§ÀÇ ¿¹µµ fileutilsÀÇ ls.cÀÌ´Ù. ƯÁ¤ Çì´õÈ­ÀÏÀÌ ÀÖ´ÂÁö ¾ø´ÂÁö ÄÄÆÄÀÏÇÒ ¶§ ¾Ë ¼ö ÀÖ´Â ¹æ¹ýÀÌ ¾ø´Ù. HAVE_LIMITS_H´Â configure ½ºÅ©¸³Æ®°¡ ¹Ì¸® °Ë»çÇÑ ³»¿ëÀ» config.h¿¡ ½á ³õ¾Ò±â ¶§¹®¿¡ ¹Ì¸® config.h¸¦ #includeÇÑ ls.c°¡ HAVE_LIMITS_HÀÇ °ªÀ¸·Î limits.h°¡ ÀÖ´ÂÁö ¾ø´ÂÁö¸¦ ¾Ë¾Æ º¼ ¼ö ÀÖ´Â °ÍÀÌ´Ù. ºÒÇàÇϰԵµ autoconf´Â Æ÷ÆÃÀ» ÀÚµ¿À¸·Î ÇØ ÁÖ´Â °ÍÀÌ ¾Æ´Ï´Ù. `ÀÚµ¿À¸·Î config¸¦ ÇØÁÖ´Â' °Í »ÓÀÌ´Ù. ±× config °á°ú¸¦ ¾î¶»°Ô Ȱ¿ëÇϴ°¡´Â Äڵ带 ÀÛ¼ºÇÒ¶§ °í·ÁÇØ¾ß ÇÑ´Ù. autoconfÀÇ ±â´ÉÀº ´ÜÁö ÀÌ·¯ÇÑ #if.. preprocessor·Î Á¦¾îÇÒ ¼ö ÀÖ´Â ½ºÀ§Ä¡¸¦ ¸¸µé¾î ÁÖ´Â ¿ªÇÒ »ÓÀÌ´Ù. ¿¹Á¦·Î ¸¸µé¾î ³õÀº firstµµ ´Ù¸¥ ½Ã½ºÅÛ¿¡¼­ µ¿ÀÛÇÒÁö´Â ¾Ë ¼ö ¾ø´Ù. °¢ ½ºÀ§Ä¡´Â autoconf¸Å´º¾óÀÇ `Preprocessor Symbol Index'¿¡ ³ª¿Í ÀÖÀ¸´Ï Âü°íÇϱ⠹ٶõ´Ù. Epilog ****** ºÎÁ·ÇÏÁö¸¸, À̱۷Π´ëÃæ À±°ûÀ» ÀâÀ» ¼ö´Â ÀÖÀ» °ÍÀÌ´Ù. Emacs¿¡¼­ C-h i¸¦ ´­·¯ autoconf¿Í automakeÀÇ ¸Å´º¾óÀ» °è¼Ó ÂüÁ¶ÇØ ³ª°¡¸é¼­ ÀÍÈ÷±â ¹Ù¶õ´Ù. [Ãâó] Autoconf/Automake °­ÁÂ|ÀÛ¼ºÀÚ PlayaHC