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


±ÔÄ¢³» ¸í·É ÀÛ¼º(Writing the Commands in Rules)

±ÔÄ¢ÀÇ ¸í·ÉµéÀº Çϳª Çϳª¾¿ ½ÇÇàµÇ´Â ½© ¸í·É ¶óÀεé·Î ÀÌ·ç¾îÁø´Ù. °¢ ¸í·ÉÀº ¹Ýµå½Ã ÅÇ Çϳª·Î ½ÃÀÛÇØ¾ß ÇÑ´Ù. ÇÑ °¡Áö ¿¹¿Ü´Â, ù¹ø° ¸í·ÉÀº ¸ñÀû¹°-Á¾¼Ó¹° ¶óÀο¡ ¼¼¹ÌÄÝ·ÐÀ¸·Î ±¸ºÐµÇ¾î µÚ¿¡ ºÙ¾îÀÖÀ» ¼ö ÀÖ´Ù´Â °ÍÀÌ´Ù. ºó¶óÀεé°ú ÁÖ¼®»ÓÀÎ ¶óÀεéÀº ¸í·É ¶óÀÎµé »çÀÌ »çÀÌ¿¡ ¿Ã ¼ö ÀÖ´Ù; ±×µéÀº ¸ðµÎ ¹«½ÃµÈ´Ù. (±×·¯³ª ÇϳªÀÇ ÅÇÀ¸·Î ½ÃÀÛÇÏ´Â °ÑÀ¸·Î º¸±â¿¡ ºó ¶óÀÎÀº ½ÇÁ¦ ºó ¶óÀÎÀÌ ¾Æ´Ï´Ù¶ó´Â °ÍÀ» ÁÖÀÇÇÏÀÚ! ÀÌ°ÍÀº ºó ¸í·ÉÀÌ´Ù;see section ºó ¸í·É »ç¿ëÇϱâ(Using Empty Commands).)

À¯ÀúµéÀº ¸¹Àº ´Ù¸¥ ½© ¸í·ÉµéÀ» »ç¿ëÇÒ ¼ö ÀÖÁö¸¸ makefile¿¡ ÀÖ´Â ¸í·ÉµéÀº, makefileÀÌ ´Ù¸¥ °æ¿ì¸¦ ÁöÁ¤ÇÏÁö ¾Ê¾Ò´Ù¸é, Ç×»ó `/bin/sh'¿¡ ÀÇÇؼ­ Çؼ®µÈ´Ù. See section ¸í·É ½ÇÇà(Command Execution).

»ç¿ëµÇ°í ÀÖ´Â ½©ÀÌ ÁÖ¼®µéÀÌ ¸í·É ¶óÀο¡ ¾²ÀÏ ¼ö ÀÖ´ÂÁö ¾ø´ÂÁö¿Í ±×µéÀÌ »ç¿ëÇÏ´Â ¹®¹ýÀÌ ¹«¾ùÀÎÁö¸¦ °áÁ¤ÇÑ´Ù. ½©ÀÌ `/bin/sh'À̶ó¸é `#'Àº ¶óÀÎÀÇ ¸¶Áö¸·À» ´Ã¸®´Â ÁÖ¼®À» ½ÃÀÛÇÑ´Ù. `#'°¡ ¶óÀÎÀÇ ¸Ç ¾Õ¿¡ ¿Ã ÇÊ¿ä´Â ¾ø´Ù. `#' ¾Õ¿¡ ÀÖ´Â ÅؽºÆ®´Â ÁÖ¼®ÀÌ ¾Æ´Ï´Ù.

¸í·É ¿¡ÄÚ(Command Echoing)

ÀϹÝÀûÀ¸·Î make´Â °¢ ¸í·É ¶óÀÎÀ» ±×°ÍÀÌ ½ÇÇàµÇ±â Àü¿¡ µð½ºÇ÷¹ÀÌÇÑ´Ù. ¿ì¸®´Â ÀÌ°ÍÀ», ¿©·¯ºÐÀÌ ±× ¸í·ÉµéÀ» Á÷Á¢ ŸÀÌÇÎÇÏ´Â ¸ð¾çÀ̹ǷÎ, echoing¶ó°í ºÎ¸¥´Ù.

¾î¶² ¶óÀÎÀÌ `@'·Î ½ÃÀÛÇÒ ¶§, ±× ¶óÀÎÀÇ ¿¡ÄÚ´Â ³ªÅ¸³ªÁö ¾Ê´Â´Ù. `@'´Â ¸í·ÉÀÌ ½©¿¡ Àü´ÞµÇ±â Àü¿¡ ¹ö·ÁÁø´Ù. ÀüÇüÀûÀ¸·Î ¿©·¯ºÐÀº ÀÌ°ÍÀ», makefileÀ» ÅëÇؼ­ ÁøÇàµÇ´Â »óȲÀ» Ç¥½ÃÇϱâ À§Çؼ­ echo¿Í °°Àº ¸í·É°ú °°Àº, ¾î¶² °ÍÀ» Ãâ·ÂÇÏ´Â °ÍÀÌ ±×°ÍÀÇ À¯ÀÏÇÑ ÇÏ´Â ÀÏÀÎ ¸í·É¿¡ ´ëÇؼ­ »ç¿ëÇÒ °ÍÀÌ´Ù:

@echo About to make distribution files

make´Â `-n' ¶Ç´Â `--just-print' Ç÷¡±×¸¦ ¹ÞÀ¸¸é ½ÇÇà ¾øÀÌ ¿¡ÄÚ¸¸ ÇÑ´Ù. See section ¿É¼ÇµéÀÇ ¿ä¾à(Summary of Options). ÀÌ·± °æ¿ì ±×¸®°í ÀÌ·± °æ¿ì¿¡¸¸ `@'À¸·Î ½ÃÀÛÇÏ´Â ¸í·ÉµéÁ¶Â÷µµ Ãâ·ÂµÈ´Ù. ÀÌ Ç÷¡±×´Â ±×°ÍÀ»À» ½ÇÁ¦·Î ¼öÇàÇÏÁö ¾Ê°í¼­, make°¡ »ý°¢Çϱ⿡ ¾î¶² ¸í·ÉµéÀÌ ÇÊ¿äÇÑ °ÍÀΰ¡¸¦ ã¾Æ³¾ ¶§ À¯¿ëÇÏ´Ù.

make¿¡ ´ëÇÑ `-s' ¶Ç´Â `--silent' Ç÷¡±×´Â, ¸¶Ä¡ ¸ðµç ¸í·ÉµéÀÌ `@'À¸·Î ½ÃÀÛÇÏ´Â °Íó·³ ¸ðµç ¿¡ÄÚ¸¦ ±ÝÁö½ÃŲ´Ù. Á¾¼Ó¹°ÀÌ ¾ø´Â Ư¼ö Ÿ°Ù .SILENT ±ÔÄ¢Àº ÀÌ°Í°ú µ¿ÀÏÇÑ È¿°ú¸¦ °¡Áø´Ù (see section Ư¼ö ³»Àå Ÿ°Ù À̸§(Special Built-in Target Names)). .SILENT´Â `@'°¡ Á» ´õ Ç÷º½ÃºíÇϱ⠶§¹®¿¡ ±âº»ÀûÀ¸·Î Àß ¾È¾´´Ù.

¸í·É ½ÇÇà(Command Execution)

Ÿ°ÙÀ» ¾÷µ¥ÀÌÆ®Çϱâ À§Çؼ­ ¸í·ÉµéÀ» ½ÇÇàÇÒ ¶§, °¢ ¶óÀο¡ ´ëÇÑ »õ·Î¿î ¼­ºê½©µéÀ» ¸¸µëÀ¸·Î½á ½ÇÇàµÈ´Ù. (½ÇÁ¦·Î make´Â °á°ú¿¡ ¿µÇâÀ» ¹ÌÄ¡Áö ¾Ê´Â Áö¸§±æÀ» ÃëÇÒ·±Áöµµ ¸ð¸¥´Ù.)

Please note: ÀÌ°ÍÀº cd¿Í °°ÀÌ °¢ ÇÁ·Î¼¼½º¿¡°Ô ·ÎÄÃÀÎ º¯¼öµéÀ» ¼³Á¤ÇÏ´Â ½© ¸í·ÉµéÀº ´ÙÀ½ ¸í·É ¶óÀε鿡 ¿µÇâÀ» ¹ÌÄ¡Áö ¾ÊÀ» °ÍÀÌ´Ù. (2) cde¸¦ »ç¿ëÇÏ°í ´ÙÀ½ ¸í·É¿¡ ¿µÇâÀ» ¹ÌÄ¡±â¸¦ ¿øÇÑ´Ù¸é ÀÌ µÎ°³¸¦ ´ÜÀÏ ¶óÀο¡ ³Ö°í ±× °¡¿îµ¥ ¼¼¹ÌÄÝ·ÐÀ» »ç¿ëÇÏÀÚ. ±×·¯¸é make´Â ±×µéÀ» ´ÜÀÏ ¸í·ÉÀ¸·Î »ý°¢ÇÏ°í ±×µéÀ» °°ÀÌ ½©¿¡°Ô Àü´ÞÇÒ °ÍÀÌ´Ù. ¿¹¸¦ µé¾î¼­:

foo : bar/lose
        cd bar; gobble lose > ../foo

¿©·¯ºÐÀÌ ´ÜÀÏ ½© ¸í·ÉÀ» ¿©·¯ ¶óÀεé·Î ºÐÇÒÇÏ°íÀÚ ÇÑ´Ù¸é ¿©·¯ºÐÀº ¸¶Áö¸· ¼­ºê¶óÀθ¸ Á¦¿ÜÇÏ°í ¸ðµç ¶óÀÎÀÇ ¸¶Áö¸·¿¡´Ù ¿ª½½·¡½¬¸¦ »ç¿ëÇØ¾ß ÇÑ´Ù. ±×·± ¶óÀεéÀÇ ½ÃÄö½º´Â ¿ª½½·¡½¬-°³Çà ½ÃÄö½º¸¦ Á¦°ÅÇÔÀ¸·Î½á, ±×°ÍÀ» ½©¿¡°Ô Àü´ÞÇϱâ Àü¿¡, ´ÜÀÏ ¶óÀÎÀ¸·Î Á¶ÇյȴÙ. ±×·¡¼­ ´ÙÀ½Àº ÀÌÀü ¿¹Á¦¿Í µ¿ÀÏÇÑ °ÍÀÌ´Ù:

foo : bar/lose
        cd bar;  \
        gobble lose > ../foo

½©·Î »ç¿ëµÈ ÇÁ·Î±×·¥Àº º¯¼ö SHELL·ÎºÎÅÍ ÃëÇØÁø´Ù. µðÆúÆ®·Î `/bin/sh'¶ó´Â ÇÁ·Î±×·¥ÀÌ »ç¿ëµÈ´Ù.

MS-DOS¿¡¼­ SHELLÀÌ ¼³Á¤µÇ¾î ÀÖÁö ¾ÊÀ¸¸é COMSPECÀ̶ó´Â º¯¼öÀÇ °ª(ÀÌ°ÍÀº Ç×»ó ¼³Á¤µÈ´Ù)ÀÌ ´ë½Å »ç¿ëµÈ´Ù.

º¯¼ö SHELL¸¦ Makefileµé¿¡¼­ ¼³Á¤ÇÏ´Â ¶óÀεéÀ» ó¸®ÇÏ´Â °ÍÀº MS-DOSÀÇ °æ¿ì ´Ù¸£´Ù. ±âº» ½©, `command.com', Àº ÀÌ»óÇÏ°Ô ±× ±â´ÉÀÌ ¸¹Àº Á¦¾àÀÌ ÀÖ°í ¸¹Àº make »ç¿ëÀÚµéÀº ´ëü ½©À» ¼³Ä¡ÇÏ´Â °æÇâÀÌ ÀÖ´Ù. ±×·¯¹Ç·Î MS-DOS¿¡¼­ make´Â º¯¼ö SHELLÀÇ °ªÀ» ½ÃÇèÇÏ°í ±×°ÍÀÇ ÇൿÀ» ±×°ÍÀÌ À¯´Ð½º ½ºÅ¸ÀÏ ½©Àΰ¡ ¾Æ´Ï¸é DOS- ½ºÅ¸ÀÏ ½©Àΰ¡¿¡ µû¶ó¼­ º¯°æÇÑ´Ù. ÀÌ°ÍÀº SHELLÀÌ `command.com'À» °¡¸®Å°´õ¶óµµ Ÿ´ç¼º ÀÖ´Â ±â´ÉÀ» Á¦°øÇÑ´Ù. `command.com'.

SHELLÀÌ À¯´Ð½º-½ºÅ¸ÀÏ ½©À» °¡¸®Å°¸é MS_DOS»óÀÇ make´Â ±× ½©ÀÌ ½ÇÁ¦·Î ã¾ÆÁú ¼ö ÀÖ´Â °ÍÀΰ¡ ¾Æ´Ñ°¡¸¦ Ãß°¡·Î °Ë»çÇÑ´Ù; ±×·¸Áö ¾Ê´Ù¸é ÀÌ°ÍÀº SHELLÀ» ¼³Á¤ÇÑ ¶óÀÎÀ» ¹«½ÃÇÑ´Ù. MS-DOS¿¡¼­ GNU make´Â ´ÙÀ½°ú °°Àº À§Ä¡µé¿¡¼­ ½©À» °Ë»öÇÑ´Ù:

  1. SHELL¿¡ ÀÇÇؼ­ ÁöÁ¤µÈ Á¤È®ÇÑ À§Ä¡¿¡¼­. ¿¹¸¦ µé¾î¼­ makefileÀÌ `SHELL = /bin/sh'¶ó°í ÁöÁ¤Çß´Ù¸é make´Â ÇöÀç µå¶óÀ̺êÀÇ `/bin' µð·ºÅ丮¿¡¼­ ãÀ» °ÍÀÌ´Ù.
  2. ÇöÀç µð·ºÅ丮.
  3. PATH º¯¼ö¿¡ ÀÖ´Â °¢ µð·ºÅ丮¿¡¼­ ¼ø¼­´ë·Î °Ë»öÇÑ´Ù.

ÀÌ°ÍÀÌ ½ÃÇèÇÑ ¸ðµç µð·ºÅ丮¿¡¼­ make´Â ù¹ø° ƯÁ¤ÇÑ ÆÄÀÏ(À§ÀÇ ¿¹Á¦¿¡¼­´Â `sh')¸¦ ã´Â´Ù. ÀÌ°ÍÀÌ ¾øÀ¸¸é ½ÇÇà ÆÄÀÏÀÓÀ» ³ªÅ¸³»´Â ¾Ë·ÁÁø È®ÀåÀÚµé ÁßÀÇ Çϳª¸¦ °¡Áö´Â ÆÄÀÏÀ» ±× µð·ºÅ丮¿¡¼­ ¶ÇÇÑ Ã£À» °ÍÀÌ´Ù. ¿¹¸¦ µé¾î¼­ `.exe', `.com', `.bat', `.btm', `.sh', ±×¸®°í ³ª¸ÓÁö.

ÀÌ·± ½ÃµµµéÁß¿¡ ¾î¤¨³Ê °ÍÀÌ¶óµµ ¼º°øÇϸé SHELLÀÇ °ªÀº ã¾ÆÁø ½©ÀÇ Ç® °æ·Î¸íÀ¸·Î ¼³Á¤µÉ °ÍÀÌ´Ù. ±×·¯³ª À̵éÁß ¾î¶² °Íµµ ã¾ÆÁöÁö ¾ÊÀ¸¸é SHELL´Â º¯°æµÉ °ÍÀÌ°í ±×·¡¼­ ÀÌ°ÍÀ» ¼³Á¤ÇÑ ¶óÀÎÀº È¿°úÀûÀ¸·Î ¹«½ÃµÉ °ÍÀÌ´Ù. ÀÌ°ÍÀÌ, make°¡ ½ÇÇàÇÏ´Â ½Ã½ºÅÛ¿¡¼­ ±×·± ½©ÀÌ ½ÇÁ¦·Î ¼³Ä¡µÇ¾ú´Ù¸é, À¯´Ð½º-½ºÅ¸ÀÏ ½©¿¡ Á¾¼ÓÀûÀ¸·Î make°¡ À¯ÀÏÇÏ°Ô Áö¿øÇÏ´Â °ÍÀÌ µÉ °ÍÀÌ´Ù.

ÀÌ·± ½©¿¡ ´ëÇÑ È®ÀåµÈ °Ë»öÀº SHELLÀÌ Makefile¿¡¼­ ¼³Á¤µÈ °æ¿ì·Î Á¦Çѵȴٴ °Í¿¡ À¯ÀÇÇÏÀÚ; ÀÌ°ÍÀÌ È¯°æº¯¼ö·Î ¶Ç´Â ¸í·ÉÇà¿¡¼­ ÁöÁ¤µÇ¸é ¿©·¯ºÐÀº À¯´Ð½º¿¡¼­ ÇÏ´Â °Í°ú ¾ÆÁÖ ¶È°°ÀÌ, ÀÌ°ÍÀ» ½©ÀÇ ¿ÏÀüÇÑ °æ·Î¸íÀ¸·Î ¼³Á¤ÇÒ °ÍÀ¸·Î ±â´ëµÈ´Ù.

À§¿Í °°Àº DOS-Á¾¼ÓÀûÀΠó¸®ÀÇ È¿°ú´Â `SHELL = /bin/sh'(¸¹Àº À¯´Ð½º makefileµéÀÌ ÇÏ´Â °Íó·³)¶ó°í ¸»ÇÏ´Â MakefileÀº ¿©·¯ºÐÀÌ PATHÀÇ ¾î¶² µð·ºÅ丮¿¡ ¿¹¸¦ µé¸é `sh.exe'°ú °°Àº °ÍÀ» ¼³Ä¡Çسõ¾ÒÀ» °æ¿ì, º¯°æ¾øÀÌ MS-DOS¿¡¼­ »ç¿ëµÉ °ÍÀÌ´Ù¶ó´Â °ÍÀÌ´Ù.

´ëºÎºÐÀÇ º¯¼öµé°ú´Â ´Ù¸£°Ô SHELL º¯¼ö´Â Àý´ë·Î ȯ°æº¯¼ö·ÎºÎÅÍ ¼³Á¤µÇÁö ¾Ê´Â´Ù. ÀÌ°ÍÀº ¿Ö³Ä¸é SHELL ȯ°æº¯¼ö°¡ ÀÎÅÍ·ºÆ¼ºêÇÑ »ç¿ëÀ» À§ÇÑ ½© ÇÁ·Î±×·¥¿¡ ´ëÇÑ ¿©·¯ºÐÀÇ °³ÀÎÀûÀÎ ¼±ÅÃÀ» ÁöÁ¤ÇÒ ¶§ »ç¿ëµÇ±â ¶§¹®ÀÌ´Ù. ÀÌ°Í°ú °°Àº °³ÀÎÀûÀÎ ¼±ÅõéÀÌ makefileÀÇ ±â´Éµé¿¡ ¿µÇâÀ» ¹ÌÄ¡Áö´Â °ÍÀº ¾ÆÁÖ ¾ÈÁÁÀ» ¼ö ÀÖ´Ù. See section ȯ°æÀ¸·ÎºÎÅÍÀÇ º¯¼öµé(Variables from the Environment). ±×·¯³ª MS-DOS¿Í MS-Windows¿¡¼­ ȯ°æº¯¼ö SHELLÀÇ °ªÀº »ç¿ëµÈ´Ù. ¿Ö³Ä¸é ±×·± ½Ã½ºÅ۵鿡¼­ ´ëºÎºÐÀÇ »ç¿ëÀÚµéÀº ÀÌ·± º¯¼ö¸¦ ¼³Á¤ÇÏÁö ¾Ê±â ¶§¹®ÀÌ´Ù. ±×·¯¹Ç·Î make¿¡ ÀÇÇؼ­ »ç¿ëµÇµµ·Ï Ưº°È÷ ¼³Á¤µÇ´Â °æ¿ì°¡ ´ëºÎºÐÀÏ °ÍÀÌ´Ù. MS-DOS¿¡¼­ SHELLÀÇ ¼³Á¤ÀÌ make¿¡ ´ëÇؼ­ ÀûÀýÇÏÁö ¾Ê´Ù¸é ¿©·¯ºÐÀº º¯¼ö MAKESHELL¸¦ make°¡ »ç¿ëÇØ¾ß ÇÏ´Â ½©¿¡ ´ëÇؼ­ ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù; ÀÌ°ÍÀº SHELLÀÇ °ªÀ» ¿À¹ö¶óÀ̵åÇÒ °ÍÀÌ´Ù.

Æз¯·² ½ÇÇà(Parallel Execution)

GNU make´Â ¿©·¯ ¸í·ÉµéÀ» µ¿½Ã¿¡ ½ÇÇàÇÏ´Â ¹æ¹ýÀ» ¾Ë°í ÀÖ´Ù. ÀϹÝÀûÀ¸·Î make´Â Çѹø¿¡ ÇϳªÀÇ ¸í·É¸¸À» ½ÇÇàÇÏ°í ´ÙÀ½ÀÇ °ÍÀ» ½ÇÇàÇϱâÀü¿¡ ±×°ÍÀÌ Á¾·áµÉ ¶§±îÁö ±â´Ù¸°´Ù. ±×·¯³ª `-j' ¶Ç´Â `--jobs' ¿É¼ÇÀº make ¿¡°Ô ¸¹Àº ¸í·ÉµéÀ» µ¿½Ã¿¡ ½ÇÇàÇϵµ·Ï ÇÑ´Ù.

MS-DOS¿¡¼­ `-j' ¿É¼ÇÀº È¿°ú°¡ ¾ø´Ù. ¿Ö³Ä¸é ±× ½Ã½ºÅÛÀº ¸ÖƼ-ÇÁ·Î¼¼½ÌÀ» Áö¿øÇÏÁö ¾Ê±â ¶§¹®ÀÌ´Ù.

`-j' ¿É¼Ç µÚ¿¡ Á¤¼ö°¡ ºÙÀ¸¸é ÀÌ°ÍÀº ÇÑ ¹ø¿¡ ¼öÇàÇÒ ¸í·ÉµéÀÇ °³¼ö¸¦ ¸»ÇÑ´Ù; ÀÌ°ÍÀº ÀÛ¾÷ ½½·Ô(job slots) ÀÇ °³¼ö¶ó°í ºÒ¸°´Ù. `-j' ¿É¼Ç µÚ¿¡ Á¤¼ö·Î º¸ÀÌ´Â °ÍÀÌ ¾ø´Ù¸é ÀÛ¾÷ ½½·ÔÀÇ °³¼ö¿¡ Á¦ÇÑÀÌ ¾ø¾îÁø´Ù. ÀÛ¾÷ ½½·ÔÀÇ µðÆúÆ® °³¼ö´Â 1ÀÌ´Ù. ÀÌ°ÍÀº ¼øÂ÷ÀûÀÎ ½ÇÇà(Çѹø¿¡ Çϳª¾¿)À» ÀǹÌÇÑ´Ù.

´Ù¼öÀÇ ¸í·ÉµéÀ» µ¿½Ã¿¡ ½ÇÇàÇÏ´Â °ÍÀÇ ÇÑ°¡Áö Áñ°ÌÁö ¾ÊÀº °á°ú´Â ¸ðµç ¸í·ÉµéÀÇ Ãâ·Â¹°ÀÌ ¸í·ÉµéÀÌ ±×°ÍÀ» º¸³¾ ¶§ ³ªÅ¸³­´Ù´Â °ÍÀÌ´Ù. ±×·¡¼­ ¼­·Î ´Ù¸¥ ¸í·Éµé·ÎºÎÅÍÀÇ ¸Þ½ÃÁöµéÀÌ ¿©±âÀú±â ¼¯¿©¼­ ³ªÅ¸³­´Ù.

´Ù¸¥ ¹®Á¦´Â µÎ ÇÁ·Î¼¼½ºµéÀÌ µ¿ÀÏÇÑ ÀåÄ¡·ÎºÎÅÍ ÀÔ·ÂÀ» µ¿½Ã¿¡ ÃëÇÒ ¼ö ¾ø´Ù´Â °ÍÀÌ´Ù; ±×·¡¼­ ´ÜÁö ÇϳªÀÇ ¸í·ÉÀÌ Å͹̳ηκÎÅÍ ÇÑ ½ÃÁ¡¿¡ ÀÔ·ÂÀ» ¹ÞÀ¸·Á°í ½ÃµµÇÑ´Ù. ±×·¡¼­ make´Â Çϳª¸¦ Á¦¿ÜÇÑ ¸ðµç ½ÇÇàÁßÀÎ ¸í·ÉµéÀÇ Ç¥ÁØ ÀÔ·Â ½ºÆ®¸²µéÀ» ¹«È¿È­ÇÒ °ÍÀÌ´Ù. ÀÌ°ÍÀº, ¿©·¯°³ÀÇ ÀÚ½Ä ÇÁ·Î¼¼½ºµéÀÌ ÀÖÀ» °æ¿ì ´ëºÎºÐÀÇ ÀÚ½Ä ÇÁ·Î¼¼½ºµé¿¡ ´ëÇؼ­ Ç¥ÁØ ÀÔ·ÂÀ¸·ÎºÎÅÍ ÀÐÀ¸·Á°í ½ÃµµÇÏ´Â °ÍÀº º¸Åë Ä¡¸íÀûÀÎ ¿¡·¯(`Broken pipe' ½Ã±×³Î)¸¦ ¸¸µé°ÍÀÌ´Ù¶ó´Â °ÍÀ» ÀǹÌÇÑ´Ù

¾î¶² ¸í·ÉÀÌ À¯È¿ÇÑ Ç¥ÁØ ÀÔ·Â ½ºÆ®¸²(Å͹̳ηκÎÅÍ ¿Ã, ¶Ç´Â ¿©·¯ºÐÀÌ makeÀÇ Ç¥ÁØÀÔ·ÂÀ» ¸®´ÙÀÌ·ºÆ®ÇÑ ¾î¶² °ÍÀÌ¶óµµ ÀÌ°÷À¸·ÎºÎÅÍ ¿Ã)À» °¡Áö°í ÀÖ´ÂÁö ¿¹ÃøÇÏ´Â °ÍÀº °ÅÀÇ ºÒ°¡´ÉÇÏ´Ù. óÀ½ ¸í·ÉÀÌ Ç×»ó ù¹ø°¸¦ ¾òÀ» °ÍÀÌ´Ù. ±×¸®°í ¸í·ÉÀº Çϳª°¡ ³¡³­ ÈÄ ½ÃÀÛÇÑ Ã¹¹ø° ¸í·ÉÀÌ ´ÙÀ½ °ÍÀ» ¾òÀ» °ÍÀÌ´Ù. ÀÌ·± ½ÄÀ¸·Î °è¼ÓµÈ´Ù.

¿ì¸®°¡ Á» ´õ ³ªÀº ´ë¾ÈÀ» ã´Â´Ù¸é makeÀÇ ÀÌ·± ¾ç½ÄÀÌ ÀÛµ¿ÇÏ´Â ¹æ¹ýÀ» ¹Ù²Ü °ÍÀÌ´Ù. ±×·¯±â Àü¿¡ ¿©·¯ºÐÀÌ º´·Ä ó¸® ±â´ÉÀ» »ç¿ëÇÏ°í ÀÖ´Ù¸é Ç¥ÁØ ÀÔ·ÂÀ» »ç¿ëÇÏ´Â ¾î¶² ¸í·Éµµ ÀÇÁ¸Çؼ­´Â ¾ÈµÈ´Ù; ±×·¯³ª ÀÌ·± ±â´ÉÀ» »ç¿ëÇÏ°í ÀÖÁö ¾Ê´Ù¸é Ç¥ÁØ ÀÔ·ÂÀº ¸ðµç ¸í·Éµé¿¡¼­ ÀϹÝÀûÀ¸·Î Àß ÀÛ¿ËÇÑ´Ù.

¾î¶² ¸í·ÉÀÌ ½ÇÆÐÇÏ°í(½Ã±×³Î¿¡ ÀÇÇؼ­ killµÇ°Å³ª 0ÀÌ ¾Æ´Ñ »óÅ°ªÀ» °¡Áö°í exitÇÏ°í), ¿¡·¯µéÀÌ ±× ¸í·É¿¡ ´ëÇؼ­ ¹«½ÃµÇÁö ¾ÊÀ¸¸é (see section ¸í·É¿¡¼­ ¿¡·¯(Errors in Commands)), µ¿ÀÏÇÑ Å¸°ÙÀ» ´Ù½Ã ¸¸µå´Â ³²Àº ¸í·É ¶óÀεéÀº ½ÇÇàµÇÁö ¾ÊÀ» °ÍÀÌ´Ù. ¸í·ÉÀÌ ½ÇÆÐÇÏ°í `-k'³ª `--keep-going' ¿É¼ÇÀÌ ÁÖ¾îÁöÁö ¾ÊÀ¸¸é (see section ¿É¼ÇµéÀÇ ¿ä¾à(Summary of Options)), make´Â ½ÇÇàÀ» ÁßÁöÇÑ´Ù. ¾î¶² ÀÌÀ¯¿¡¼­°Ç(½Ã±×³ÎÀ» Æ÷ÇÔÇؼ­) ½ÇÇàÁßÀÎ ÀÚ½Ä ÇÁ·Î¼¼½ºµéÀ» °¡Áø make°¡ Á¾·áÇÏ°Ô µÇ¸é ±×°ÍÀº ½ÇÁ¦·Î ³ª°¡±â Àü¿¡ ÀÚ½Ä ÇÁ·Î¼¼½ºµéÀÌ Á¾·áÇϱ⸦ ±â´Ù¸°´Ù.

½Ã½ºÅÛÀÇ ºÎÇÏ°¡ ¾ÆÁÖ Å¬¶§ ¿©·¯ºÐÀº ¾Æ¸¶µµ ºÎÇÏ°¡ ÀûÀ» ¶§º¸´Ù ´õ ÀûÀº ÀÛ¾÷µéÀ» ½ÇÇàÇÏ°íÀÚ ÇÒ °ÍÀÌ´Ù. ¿©·¯ºÐÀº `-l' ¿É¼ÇÀ» ½á¼­ make¿¡°Ô Çѹø¿¡ ½ÇÇàÇÒ ÀÛ¾÷µéÀÇ °³¼ö¸¦, Æò±Õ ºÎÇÏ¿¡ ±âÃÊÇؼ­ Á¦ÇÑÇϵµ·Ï Áö½ÃÇÒ ¼ö ÀÖ´Ù. `-l' ¶Ç´Â `--max-load' ¿É¼ÇÀº ±× µÚ¿¡ ºÎµ¿-¼Ò¼ýÁ¡ ¼ýÀÚ°¡ ºÙ´Â´Ù. ¿¹¸¦ µé¾î¼­,

-l 2.5

ÀÌ°ÍÀº make°¡, Æò±Õ ºÎÇÏ°¡ 2.5º¸´Ù Å©¸é ÇÑ ÀÛ¾÷º¸´Ù ´õ ¸¹Àº ÀÛ¾÷À» ½ÃÀÛÇÏÁö ¸øÇϵµ·Ï ÇÒ °ÍÀÌ´Ù. µÚ¿¡ ¼ýÀÚ°¡ ¾ø´Â `-l' ¿É¼ÇÀº, ÀÌÀü¿¡ `-l' ¿É¼ÇÀ¸·Î ÁöÁ¤µÈ °ÍÀÌ ÀÖ´Ù¸é, ºÎÇÏ Á¦ÇÑÀ» Á¦°ÅÇÑ´Ù.

Á» ´õ Á¤È®ÇÏ°Ô, make°¡ ÇϳªÀÇ ÀÛ¾÷À» ½ÃÀÛÇÒ ¶§, ±×¸®°í Àû¾îµµ ÇϳªÀÇ ½ÇÇàÁßÀÎ ÀÛ¾÷À» °¡Áö°í ÀÖÀ» ¶§, ÀÌ°ÍÀº ÇöÀç Æò±Õ ºÎÇϸ¦ ÃøÁ¤ÇÑ´Ù; `-l'·Î ÁÖ¾îÁø Á¦ÇѺ¸´Ù ´õ ³·Áö ¾Ê´Ù¸é make ´Â Æò±Õ ºÎÇÏ°¡ ±× Á¦ÇѺ¸´Ù ³·¾ÆÁú ¶§±îÁö ȤÀº ¸ðµç ´Ù¸¥ ÀÛ¾÷µéÀÌ Á¾·áµÉ ¶§±îÁö ±â´Ù¸°´Ù.

µðÆúÆ®·Î ºÎÇÏ Á¦ÇÑÀº ¾ø´Ù.

¸í·É¿¡¼­ ¿¡·¯(Errors in Commands)

°¢ ½© ¸í·ÉÀÌ ¸®ÅÏÇÑ ÈÄ, make´Â ±×°ÍÀÇ Á¾·á »óÅ°ªÀ» Á¶»çÇÑ´Ù. ±× ¸í·ÉÀÌ ¼º°øÀûÀ¸·Î Á¾·áÇÏ¸é ´ÙÀ½ ¸í·É ¶óÀÎÀÌ »õ·Î¿î ½©¿¡¼­ ½ÇÇàµÈ´Ù; ¸¶Áö¸· ¸í·É ¶óÀÎÀÌ Á¾·áµÈ ÈÄ ±× ±ÔÄ¢Àº Á¾·áÇÑ´Ù.

¿¡·¯°¡ ÀÖÀ¸¸é(Á¾·á »óÅ°ªÀÌ 0ÀÌ ¾Æ´Ï¸é), make´Â ÇöÀç ±ÔÄ¢À» ±×¸®°í ¾Æ¸¶µµ ¸ðµç ±ÔÄ¢µéÀ», Æ÷±âÇÑ´Ù.

¶§¶§·Î ¾î¶² ¸í·ÉÀÇ ½ÇÆа¡ ¹®Á¦¸¦ °¡¸®Å°´Â °ÍÀº ¾Æ´Ï´Ù. ¿¹¸¦ µé¾î¼­ ¿©·¯ºÐÀº mkdir ¸í·ÉÀ» »ç¿ëÇؼ­ ¾î¶² µð·ºÅ丮ÀÇ Á¸Àç À¯¹«¸¦ °Ë»çÇÒ ¼öµµ ÀÖ´Ù. ±×·± µð·ºÅ丮°¡ ÀÌ¹Ì Á¸ÀçÇÑ´Ù¸é mkdir´Â ¿¡·¯¸¦ º¸°íÇÒ °ÍÀÌ´Ù. ±×·¯³ª ¿©·¯ºÐÀº ¾Æ¸¶µµ make°¡ ±×°ÍÀ» ½Å°æ¾²Áö ¾Ê°í °è¼ÓÇϱ⸦ ¿øÇÒ °ÍÀÌ´Ù.

¸í·É ¶óÀο¡¼­ ¿¡·¯µéÀ» ¹«½ÃÇϱâ À§Çؼ­ ±× ¶óÀÎ ÅؽºÆ®ÀÇ ½ÃÀۺκÐ(Ãʱâ ÅÇ ¹®ÀÚ µÚ¿¡)¿¡ `-' Çϳª¸¦ ³Ö´Â´Ù. `-'´Â ¸í·ÉÀÌ ½ÇÇàÀ» À§Çؼ­ ½©·Î Àü´ÞµÇ±â Àü¿¡ ¹«½ÃµÈ´Ù.

¿¹¸¦ µé¾î¼­,

clean:
        -rm -f *.o

ÀÌ°ÍÀº rmÀÌ ¾î¶² ÆÄÀÏÀ» Á¦°ÅÇÒ ¼ö ¾ø´ÙÇÏ´õ¶óµµ °è¼ÓÇϵµ·Ï ÇÑ´Ù.

¿©·¯ºÐÀÌ make¸¦ `-i'³ª `--ignore-errors' Ç÷¡±×¸¦ ½á¼­ ½ÇÇàÇÒ ¶§ ¿¡·¯µéÀÌ ¸ðµç ±ÔÄ¢ÀÇ ¸ðµç ¸í·Éµé¿¡¼­ ¹«½ÃµÈ´Ù. makefile¿¡ Àִ Ư¼ö Ÿ°Ù .IGNORE¿¡ ´ëÇÑ ±ÔÄ¢Àº, Á¾¼Ó¹°µéÀÌ ¾øÀ» ¶§, µ¿ÀÏÇÑ È¿°ú¸¦ ³½´Ù. ¿¡·¯¸¦ ¹«½ÃÇÏ´Â ÀÌ·± ¹æ¹ýµéÀº `-'°¡ Á» ´õ À¯¿¬Çϱ⠶§¹®¿¡ ±¸½ÄÀÌ µÇ¹ö·È´Ù.

¿¡·¯µéÀÌ ¹«½ÃµÇ¾î¾ß ÇÒ ¶§, `-'³ª `-i' Ç÷¡±× ¶§¹®¿¡, make´Â ¿¡·¯ ¸®ÅÏÀ» ¼º°øó·³ Ãë±ÞÇÑ´Ù. ´Ü, ¿©·¯ºÐ¿¡ ±× ¸í·ÉÀÌ exitÇÑ »óÅ Äڵ带 ¸»ÇØÁÖ´Â ¸Þ½ÃÁö¸¦ Ãâ·ÂÇÏ°í ¿¡·¯°¡ ¹«½ÃµÇ¾ú´Ù´Â °ÍÀ» ¸»ÇÏ´Â °Í¿Ü´Â ±×·¸´Ù.

make°¡ ¹«½ÃÇϵµ·Ï ¿ä±¸¹ÞÁö ¾ÊÀº ¾î¶² ¿¡·¯°¡ ¹ß»ýÇϸé, ÀÌ°ÍÀº ÇöÀç Ÿ°ÙÀÌ Á¤»óÀûÀ¸·Î ´Ù½Ã ¸¸µé¾îÁú¼ö ¾ø´Ù´Â °ÍÀ» ÀǹÌÇÏ°í, ÀÌ°Í¿¡ Á÷°£Á¢ÀûÀ¸·Î ÀÇÁ¸ÇÏ°í ÀÖ´Â ´Ù¸¥ ¾î¶² °Íµéµµ ¶ÇÇÑ ¸¸µé¾îÁú ¼ö ¾ø´Ù´Â °ÍÀ» ÀǹÌÇÑ´Ù. ÀÌ·± Ÿ°Ùµé¿¡ ´ëÇÑ ´õÀÌ»óÀÇ ¾î¶² ¸í·Éµéµµ ½ÇÇàµÇÁö ¾ÊÀ» °ÍÀÌ´Ù. ¿Ö³Ä¸é ±×µéÀÇ »çÀüÁ¶°Ç(precondition)µéÀÌ ÀÌ·ç¾îÁöÁö ¾Ê¾Ò±â ¶§¹®ÀÌ´Ù.

ÀϹÝÀûÀ¸·Î make´Â ÀÌ·± »óȲ¿¡¼­ Áï°¢ Æ÷±âÇÏ¿© 0ÀÌ ¾Æ´Ñ »óÅ°ªÀ» ¸®ÅÏÇÑ´Ù. ±×·¯³ª `-k'³ª `--keep-going' Ç÷¡±×°¡ ÁöÁ¤µÇ¸é Æ÷±âÇÏ°í 0ÀÌ ¾Æ´Ñ »óÅ°ªÀ» ¸®ÅÏÇϱâ Àü¿¡, make´Â °è·ùÁßÀΠŸ°ÙµéÀÇ ´Ù¸¥ Á¾¼Ó¹°µéÀ» »ý°¢Çϱ⠽ÃÀÛÇÏ°í, ±×°ÍµéÀ» ÇÊ¿äÇÏ´Ù¸é ´Ù½Ã ¸¸µç´Ù. ¿¹¸¦ µé¾î¼­ ÇÑ°¡Áö ¿ÀºêÁ§Æ® ÆÄÀÏÀ» ÄÄÆÄÀÏÇÒ ¶§ ¿¡·¯°¡ »ý±ä ÈÄ¿¡ `make -k'´Â ÀÌ¹Ì ´Ù¸¥ ¿ÀºêÁ§Æ® ÆÄÀϵéÀ» ¸µÅ©°¡ÇÏ´Â °ÍÀÌ ºÒ°¡´ÉÇÒ °ÍÀ̶ó´Â °ÍÀ» ¾È´ÙÇÏ´õ¶óµµ ´Ù¸¥ ÀÌ·± ¿ÀºêÁ§Æ® ÆÄÀϵéÀ» °Ô¼Ó ÄÄÆÄÀÏÇÒ °ÍÀÌ´Ù. See section ¿É¼ÇµéÀÇ ¿ä¾à(Summary of Options).

ÀϹÝÀûÀÎ ÇൿÀº ¿©·¯ºÐÀÇ ¸ñÀûÀÌ Æ¯Á¤ÇÑ Å¸°ÙÀÌ °»½ÅµÇµµ·Ï ÇÏ´Â °ÍÀ̶ó°í °¡Á¤ÇÑ´Ù; ÀÏ´Ü make°¡ ÀÌ°ÍÀÌ ºÒ°¡´ÉÇÑ °ÍÀ» ¹è¿ì°Ô µÇ¸é ÀÌ°ÍÀº ±× ½ÇÆи¦ Áï°¢ º¸°íÇÒ °ÍÀÌ´Ù. `-k' ¿É¼ÇÀº, ½ÇÁ¦ ¸ñÀûÀÌ ÇÁ·Î±×·¥ ³»¿¡¼­ ¸¸µé¾îÁø °¡´ÉÇÑ ¸¹Àº º¯È­¸¦ Å×½ºÆ®ÇÏ´Â °ÍÀ̶ó°í, ±×¸®°í ¾Æ¸¶µµ ¸î°¡Áö µ¶¸³ÀûÀÎ ¹®Á¦µéÀ» ã¾Æ¼­ ¿©·¯ºÐÀÌ ±×°ÍµéÀ» ´ÙÀ½ ÄÄÆÄÀÏ ½Ãµµ ÀÌÀü¿¡ ±³Á¤ÇÒ ¼ö ÀÖµµ·Ï ÇÏ´Â °ÍÀ̶ó°í ¸»ÇÏ´Â °ÍÀÌ´Ù. ÀÌ°ÍÀÌ ¹Ù·Î ¿Ö À̸ƽºÀÇ compile ¸í·ÉÀÌ µðÆúÆ®·Î `-k' Ç÷¡±×¸¦ Àü´ÞÇϴ°¡¿¡ ´ëÇÑ ÀÌÀ¯ÀÌ´Ù. @cindex Emacs (M-x compile)

ÀϹÝÀûÀ¸·Î ¾î¶² ¸í·ÉÀÌ ½ÇÆÐÇÒ ¶§, ÀÌ°ÍÀÌ Å¸°Ù ŸÀÏÀ» º¯°æÇÏ¿© ¹ö·È´Ù¸é, ±× ÆÄÀÏÀº ¿À¿°µÈ °ÍÀÌ°í »ç¿ëµÉ ¼ö ¾ø´Â °ÍÀÌ´Ù---¾Æ´Ï¸é Àû¾îµµ ÀÌ°ÍÀº ¿ÏÀüÈ÷ °»½ÅµÈ °ÍÀÌ ¾Æ´Ï´Ù. ±×·¯³ª ±× ÆÄÀÏÀÇ Å¸ÀÓ½ºÅÆÇÁ´Â ÀÌ°ÍÀÌ ÀÌÁ¦ °»½ÅµÈ °ÍÀ̶ó°í ¸»ÇÑ´Ù. ±×·¡¼­ ´ÙÀ½¹ø make°¡ ½ÇÇàÇÒ ¶§ ÀÌ°ÍÀº ±× ÆÄÀÏÀ» °»½ÅÇÏ·Á°í ½ÃµµÇÏÁö ¾ÊÀ» °ÍÀÌ´Ù. ÀÌ·± »óȲÀº ¸í·ÉÀÌ ½Ã±×³Î¿¡ ÀÇÇؼ­ killµÇ¾úÀ» ¶§¿Í µ¿ÀÏÇÏ´Ù; see section make¸¦ ÀÎÅÍ·´Æ® ¶Ç´Â Á×À̱â(Interrupting or Killing make). ±×·¡¼­ ÀϹÝÀûÀ¸·Î ÇØ¾ß ÇÒ ¿Ã¹Ù¸¥ ÀÏÀº ±× ¸í·ÉÀÌ ±× ÆÄÀÏÀ» º¯°æ ½ÃÀÛÇÑ ÈÄ ½ÇÆÐÇß´Ù¸é ±× Å¸°Ù ÆÄÀÏÀ» Áö¿ì´Â °ÍÀÌ´Ù. .DELETE_ON_ERROR°¡ Ÿ°ÙÀ¸·Î½á ³ªÅ¸³ª¸é make´Â ÀÌ·± ÀÏÀ» ÇÒ °ÍÀÌ´Ù. ÀÌ°ÍÀº ´ë°³ Ç×»ó make°¡ ÇÏ¿´À¸¸é ÇÏ´Â °ÍÀÌÁö¸¸ ÀÌ°ÍÀº ¿ª»çÀûÀ¸·Î Çö½ÇÀûÀÎ °ÍÀÌ ¾Æ´Ï´Ù; ±×·¡¼­ ȣȯ¼ºÀ» À§Çؼ­ ¿©·¯ºÐÀº ¹Ýµå½Ã ÀÌ°ÍÀ» ¸í½ÃÀûÀ¸·Î ¿ä±¸ÇØ¾ß ÇÑ´Ù.

make¸¦ ÀÎÅÍ·´Æ® ¶Ç´Â Á×À̱â(Interrupting or Killing make)

make°¡ Ä¡¸íÀûÀÎ ½Ã±×³ÎÀ» ¾î¶² ¸í·ÉÀÌ ½ÇÇàÇÏ°í ÀÖÀ» ¶§, ¹Þ´Â´Ù¸é ÀÌ°ÍÀº ±× ¸í·ÉÀÌ ¾÷µ¥ÀÌÆ®ÇÏ·Á°í ÇÑ Å¸°Ù ÆÄÀÏÀ» »èÁ¦ÇÒ °ÍÀÌ´Ù. ÀÌ°ÍÀº Ÿ°Ù ÆÄÀÏÀÇ ¸¶Áö¸·-º¯°æ ½Ã°£ÀÌ make°¡ ¸ÇóÀ½ ±×°ÍÀ» °Ë»çÇÑ ÀÌÈÄ º¯°æµÇ¾ú´Ù¸é ÀÌ·ç¾îÁø´Ù.

Ÿ°ÙÀ» »èÁ¦ÇÏ´Â ¸ñÀûÀº make°¡ ´ÙÀ½¿¡ ½ÇÇàµÉ ¶§ È®½ÇÈ÷ Ãâ¹ß¼±À¸·ÎºÎÅÍ ´Ù½Ã ¸¸µé¾îÁöµµ·Ï ÇÏ´Â °ÍÀÌ´Ù. ¿Ö ÀÌ·±°¡? ¿©·¯ºÐÀÌ ÄÄÆÄÀÏ·¯°¡ ½ÇÇàÇÏ°í ÀÖÀ» ¶§ Ctrl-c¸¦ ÀÔ·ÂÇß´Ù°í ±×¸®°í ¿ÀºêÁ§Æ® ÆÄÀÏ `foo.o'À» ÀÛ¼ºÇϱ⠽ÃÀÛÇß´Ù°í °¡Á¤ÇÏÀÚ. Ctrl-c´Â ÄÄÆÄÀÏ·¯¸¦ ųÇÏ°Ô µÇ¾î ¸¶Áö¸·-º¯°æ ½Ã°£ÀÌ ¼Ò½º ÆÄÀÏ `foo.c'º¸´Ù ´õ »õ·Î¿î ºÒ¿ÏÀüÇÑ ÆÄÀÏÀ» ¸¸µé°Ô µÈ´Ù. ±×·¯³ª makeµµ ¶ÇÇÑ Ctrl-c ½Ã±×³ÎÀ» ¹Þ°Ô µÇ°í ÀÌ ºÒ¿ÏÀüÇÑ ÆÄÀÏÀ» »èÁ¦ÇÑ´Ù. make°¡ ÀÌ°ÍÀ» ÇÏÁö ¾Ê´Â´Ù¸é ´ÙÀ½ make È£ÃâÀº `foo.o'ÀÌ °»½ÅÀÌ ÇÊ¿äÇÑ ÆÄÀÏÀÌ ¾Æ´Ï¶ó°í »ý°¢ÇÒ °ÍÀÌ´Ù---±×·¡¼­ ÀÌ°ÍÀÌ ¹ÝÂë ºÎÁ·ÇÑ ¿ÀºêÁ§Æ® ÆÄÀÏÀ» ¸µÅ©ÇÏ·Á°í ÇÒ ¶§ ¸µÄ¿´Â ÀÌ»óÇÑ ¿¡·¯ ¸Þ½ÃÁö¸¦ ³»°Ô µÉ °ÍÀÌ´Ù.

¿©·¯ºÐÀº ¾î¶² Ÿ°Ù¿¡ ÀÇÁ¸Çϴ Ư¼ö Ÿ°Ù .PRECIOUSÀ» ¸¸µëÀ¸·Î½á ÀÌ·± ½ÄÀÇ Å¸°Ù ÆÄÀÏÀÇ »èÁ¦¸¦ ¸·À» ¼ö ÀÖ´Ù. Ÿ°ÙÀ» ´Ù½Ã ¸¸µé±â Àü¿¡ make´Â ±×°ÍÀÌ .PRECIOUSÀÇ Á¾¼Ó¹°µé Áß¿¡ ÀÖ´ÂÁö ¾ø´ÂÁö¸¦ °Ë»çÇÏ°í ±×°Í¿¡ ÀÇÇؼ­ ±× Ÿ°ÙÀÌ ½Ã±×³ÎÀÌ ¹ß»ýµÇ¾úÀ» ¶§ »èÁ¦µÇ¾î¾ß ÇÏ´ÂÁö ±×·¯Áö ¾Ê´ÂÁö¸¦ °áÁ¤ÇÑ´Ù. ¿©·¯ºÐÀÌ ÀÌ·¸°Ô ÇØ¾ß ÇÒ ¸î°¡Áö ÀÌÀ¯´Â ´ÙÀ½°ú °°´Ù. Ÿ°ÙÀº ¾î¶² ¼Ò±Ô¸ð Çü½ÄÀ¸·Î °»½ÅµÈ´Ù. ¶Ç´Â Ÿ°ÙÀº º¯°æ-½Ã°£À» ±â·ÏÇϱâ À§Çؼ­¸¸ Á¸ÀçÇÑ´Ù(±×°ÍÀÇ ³»¿ëÀº »ó°üÀÌ ¾ø´Ù). ¶Ç´Â Ÿ°ÙÀº ´Ù¸¥ Á¾·ùÀÇ ¹®Á¦¸¦ ¸·±â À§Çؼ­ ¸ðµç ½ÃÁ¡¿¡ Á¸ÀçÇؾ߸¸ ÇÑ´Ù.

makeÀÇ Àç±ÍÀû »ç¿ë(Recursive Use of make)

makeÀÇ Àç±ÍÀû »ç¿ëÀ̶õ make¸¦ makefile¿¡¼­ ÇϳªÀÇ ¸í·ÉÀ¸·Î »ç¿ëÇÑ´Ù´Â °ÍÀÌ´Ù. ÀÌ Å×Å©´ÐÀº ¿©·¯ºÐÀÌ ´õ Å« ½Ã½ºÅÛÀ» ¸¸µå´Â ¿©·¯ ¼­ºê½Ã½ºÅÛµéÀ» À§ÇÑ ¿©·¯ ºÐ¸®µÈ makefileµéÀ» ¿øÇÒ ¶§ À¯¿ëÇÏ´Ù. ¿¹¸¦ µé¾î¼­ ¿©·¯ºÐÀÌ ÀÚ½ÅÀÇ makefileÀ» °¡Áö°í ÀÖ´Â `subdir' ¼­ºêµð·ºÅ丮¸¦ °¡Áö°í ÀÖ°í »óÀ§ µð·ºÅ丮ÀÇ makefileÀ» »ç¿ëÇؼ­ ±× ¼­ºê µð·ºÅ丮¿¡ ´ëÇؼ­ make¸¦ ½ÇÇàÇÏ°íÀÚ ÇÑ´Ù°í °¡Á¤ÇÏÀÚ. ¿©·¯ºÐÀº ´ÙÀ½°ú °°ÀÌ ÀÛ¼ºÇؼ­ ÀÌ·¸°Ô ÇÒ ¼ö ÀÖ´Ù:

subsystem:
        cd subdir && $(MAKE)

¶Ç´Â µ¿ÀÏÇÏ°Ô ´ÙÀ½°ú °°ÀÌ ÇÒ ¼öµµ ÀÖ´Ù (see section ¿É¼ÇµéÀÇ ¿ä¾à(Summary of Options)):

subsystem:
        $(MAKE) -C subdir

¿©·¯ºÐÀº ÀÌ ¿¹Á¦¸¦ ±×´ë·Î º¹»çÇؼ­ Àç±ÍÀû make ¸í·ÉÀ» ÀÛ¼ºÇÒ ¼öµµ ÀÖÁö¸¸ ±×µéÀÌ ÀÛµ¿ÇÏ´Â ¹æ½Ä°ú ÀÌÀ¯, ±×¸®°í ¼­ºê-make°¡ Åé-·¹º§ make¿¡ ¾î¶»°Ô ¿¬°áµÇ¾î Àִ°¡¿¡ ´ëÇؼ­ ¾Ë¾Æ¾ß ÇÒ °ÍµéÀÌ ¸¹ÀÌ ÀÖ´Ù.

¿©·¯ºÐÀÇ ÆíÀǸ¦ À§Çؼ­ GNU make´Â º¯¼ö CURDIR¸¦ ÇöÀç ÀÛ¾÷ µð·ºÅ丮ÀÇ °æ·Î¸íÀ¸·Î ¼³Á¤ÇÑ´Ù. -C°¡ ¾²¿´´Ù¸é ¿À¸®Áö³Î µð·ºÅ丮°¡ ¾Æ´Ï¶ó »õ·Î¿î µð·ºÅ丮ÀÇ °æ·Î¸¦ Æ÷ÇÔÇÒ °ÍÀÌ´Ù. ±×°ªÀº(CURDIRÀÇ °ª ?) ÀÌ°ÍÀÌ makefile¾È¿¡¼­ ¼³Á¤µÇ¾ú´Ù¸é °¡Áú ¿ì¼±¼øÀ§¿Í µ¿ÀÏÇÏ´Ù(µðÆúÆ®·Î ȯ°æ º¯¼ö CURDIR´Â ÀÌ °ªÀ» ¿À¹ö¶óÀ̵åÇÏÁö ¾ÊÀ» °ÍÀÌ´Ù). ÀÌ º¯¼ö¸¦ ¼³Á¤ÇÏ´Â °ÍÀº makeÀÇ ÀÛµ¿¿¡ ¿µÇâÀ» ¹ÌÄ¡Áö ¾Ê´Â´Ù.

MAKE º¯¼ö°¡ ÀÛµ¿ÇÏ´Â ¹æ¹ý(How the MAKE Variable Works)

Àç±ÍÀûÀÎ make ¸í·ÉµéÀº, ´ÙÀ½¿¡¼­ º¼ ¼ö ÀÖµíÀÌ `make' ¸í·É À̸§À» ¸í½ÃÀûÀ¸·Î ¾²Áö ¾Ê°í, Ç×»ó MAKEº¯¼ö¸¦ »ç¿ëÇÏ´Â °ÍÀÌ ÁÁ´Ù.

subsystem:
        cd subdir && $(MAKE)

ÀÌ º¯¼öÀÇ °ªÀº make°¡ È£ÃâµÇ´Â ÆÄÀÏ À̸§ÀÌ´Ù. ÀÌ ÆÄÀÏ À̸§ÀÌ `/bin/make'À̶ó¸é ½ÇÇàµÉ ¸í·ÉÀº `cd subdir && /bin/make'ÀÏ °ÍÀÌ´Ù. Åé-·¹º§ makefileÀ» ½ÇÇàÇϱâ À§Çؼ­ Ư¼öÇÑ ¹öÀüÀÇ make¸¦ »ç¿ëÇÑ´Ù¸é µ¿ÀÏÇÑ Æ¯¼öÇÑ ¹öÀüÀÌ Àç±ÍÀû È£Ãâ¿¡µµ »ç¿ëµÉ °ÍÀÌ´Ù.

Ư¼öÇÑ ±â´ÉÀ¸·Î½á, MAKE¸¦ ±ÔÄ¢ÀÇ ¸í·É¿¡¼­ »ç¿ëÇÑ´Ù´Â °ÍÀº `-t' (`--touch'), `-n' (`--just-print'), ¶Ç´Â `-q' (`--question')¿É¼ÇÀÇ È¿°ú¸¦ º¯°æÇÑ´Ù. MAKEº¯¼ö¸¦ »ç¿ëÇÏ´Â °ÍÀº ¸í·É ¶óÀÎÀÇ Ã³À½¿¡ `+'¹®ÀÚ¸¦ »ç¿ëÇÏ´Â °Í°ú µ¿ÀÏÇÑ È¿°ú°¡ ÀÖ´Ù.See section ¸í·É ½ÇÇà ´ë½Å¿¡...(Instead of Executing the Commands).

À§ÀÇ ¿¹Á¦¿¡¼­ `make -t' ¶ó´Â ¸í·ÉÀ» »ý°¢Çغ¸ÀÚ. (`-t'¿É¼ÇÀº ½ÇÁ¦ ¾Æ¹«·± ¸í·Éµµ ½ÇÇàÇÏÁö ¾Ê°í¼­µµ ¸ñÀû¹°À» °¡Àå ÃÖ±ÙÀÇ Å¸ÀÓ ½ºÅÆÇÁ¸¦ °¡Áö´Â °ÍÀ¸·Î ¸¶Å·ÇÑ´Ù; section ¸í·É ½ÇÇà ´ë½Å¿¡...(Instead of Executing the Commands).) `-t'ÀÇ ÀϹÝÀûÀÎ Á¤ÀǸ¦ µû¶ó¼­, ¿¹Á¦¿¡¼­ `make -t' ¸í·ÉÀº `subsystem'¶ó´Â À̸§À» °¡Áø ÆÄÀϤ·¸£ Çϳª »ý¼ºÇÏ°í ¾Æ¹«°Íµµ ¾ÈÇÒ °ÍÀÌ´Ù. ¿©·¯ºÐÀÌ ½ÇÁ¦·Î ¿øÇÏ´Â °ÍÀº `cd subdir &&' make -t ÀÌ´Ù; ±×·¯³ª ÀÌ°ÍÀº ÇöÁ¸ÇÏ´Â ¸í·ÉÀ» ¿ä±¸ÇÑ´Ù. ±×·¡¼­ `-t'°¡ ¸í·ÉÀ» ½ÇÇàÇÏÁö ¸»¶ó°í ÇÑ °ÍÀÌ´Ù.

Ư¼öÇÑ ±â´ÉÀÌ ÀÌ°ÍÀ» ¿©·¯ºÐÀÌ ¿øÇÏ´Â °ÍÀ¸·Î ¸¸µç´Ù: ¾î¶² ±ÔÄ¢ÀÇ ¸í·ÉÀÌ º¯¼ö MAKEÀ» ´ã°í ÀÖÀ» ¶§¸¶´Ù Ç÷¡±× `-t', `-n' ±×¸®°í `-q'´Â ±× ¶óÀÎÀ» Àû¿ëÇÏÁö ¾Ê´Â´Ù. MAKE¸¦ ´ã°í ÀÖ´Â ¸í·É ¶óÀεéÀº ´ëºÎºÐÀÇ ¸í·ÉÀÌ ½ÇÇàÇÏÁö ¾Êµµ·Ï ÇÏ´Â Ç÷¡±×ÀÇ Á¸Àç¿¡µµ ºÒ±¸ÇÏ°í º¸Åë ½ÇÇàµÈ´Ù. ÀϹÝÀûÀÎ MAKEFLAGS ¸ÞÄ«´ÏÁòÀº Ç÷¡±×µéÀ» ¼­ºê-make (see section ¼­ºê-make¿¡ ´ëÇÑ Åë½Å ¿É¼Ç(Communicating Options to a Sub-make)) ¿¡°Ô Àü´ÞÇÏ¿©, ÆÄÀÏÀ» ÅÍÄ¡Ç϶ó´Â ¶Ç´Â ¸í·ÉµéÀ» ÀμâÇ϶ó´Â ¿©·¯ºÐÀÇ ¿ä±¸°¡ ¼­ºê½Ã½ºÅÛ¿¡ º¸±ÞµÈ´Ù.

¼­ºê-make¿¡ ´ëÇÑ Åë½Å º¯¼ö(Communicating Variables to a Sub-make)

Åé-·¹º§ makeÀÇ º¯¼ö °ªµéÀº ¸í½ÃÀû ¿ä±¸¿¡ ÀÇÇؼ­ ȯ°æÀ» ÅëÇؼ­ ¼­ºê-make·Î Àü´ÞµÉ ¼ö ÀÖ´Ù. ÀÌ·± º¯¼öµéÀº ¼­ºê-make¿¡¼­ µðÆúÆ®·Î Á¤ÀǵÇÁö¸¸ ¼­ºê-make makefiel¿¡ ÀÇÇؼ­ »ç¿ëµÇ´Â, makefile¿¡¼­ ÁöÁ¤µÈ °ÍÀ», `-e' ½ºÀ§Ä¡ (see section ¿É¼ÇµéÀÇ ¿ä¾à(Summary of Options))¸¦ »ç¿ëÇÏÁö ¾ÊÀ¸¸é, ¿À¹ö¶óÀ̵åÇÏÁö ¾Ê´Â´Ù.

º¯¼ö¸¦ Àü´ÞÇØÁÖ±â À§Çؼ­ ¶Ç´Â ÀͽºÆ÷Æ®(export)Çϱâ À§Çؼ­ make´Â °¢ ¸í·ÉÀ» ½ÇÇàÇϱâ À§Çؼ­ ȯ°æ¿¡´Ù ±× º¯¼ö¿Í °ªÀ» ´õÇÑ´Ù. ±×·¯¸é ¼­ºê-make´Â ȯ°æÀ» »ç¿ëÇؼ­ ±×ÀÇ º¯¼ö°ªµéÀÇ Å×À̺íÀ» ÃʱâÈ­ÇÑ´Ù. See section ȯ°æÀ¸·ÎºÎÅÍÀÇ º¯¼öµé(Variables from the Environment).

¸í½ÃÀûÀÎ ¿ä±¸¸¦ Á¦¿ÜÇÏ°í, make´Â ÀÌ°ÍÀÌ È¯°æ¿¡¼­ Ãʱ⿡ Á¤Àǵǰųª ¸í·É ¶óÀο¡¼­ ¼³Á¤µÈ °æ¿ì¿¡¸¸, ±×¸®°í ±×°ÍÀÇ À̸§ÀÌ ¿µ¹®ÀÚ, ¼ýÀÚ ±×¸®°í ¹ØÁÙ·Î ÀÌ·ç¾îÁ³´Ù¸é, ÀͽºÆ÷Æ®ÇÑ´Ù. ¾î¶² ½©µéÀº ¿µ¹®ÀÚ, ¼ýÀÚ, ±×¸®°í ¹ØÁÙÀÌ ¾Æ´Ñ ¹®ÀÚ·Î ÀÌ·ç¾îÁø ȯ°æº¯¼ö À̸§µéÀ» ´ëóÇÏÁö ¸øÇÑ´Ù.

Ư¼ö º¯¼ö SHELL°ú MAKEFLAGSµéÀº Ç×»ó ÀͽºÆ÷Æ®µÈ´Ù(±×°ÍµéÀ» unexportÇÏÁö ¾Ê¾Ò´Ù¸é). MAKEFILES´Â ±×°ÍÀ» ¾î¶² °ÍÀ¸·Î ¼³Á¤Çϸé ÀͽºÆ÷Æ®µÈ´Ù.

make´Â ¸í·É ¶óÀο¡¼­ Á¤ÀÇµÈ º¯¼ö °ªµéÀ», MAKEFLAGS º¯¼ö¿¡ ±×µéÀ» ³Ö¾î¼­, ÀÚµ¿À¸·Î ¾Æ·¡·Î Àü´ÞÇÑ´Ù. Àü´ÞÇÑ´Ù. ´ÙÀ½ ¼½¼ÇÀ» º¸ÀÚ.

º¯¼öµéÀÌ make¿¡ ÀÇÇؼ­ µðÆúÆ®·Î »ý¼ºµÇ¾ú´Ù¸é À̵éÀº º¸Åë ¾Æ·¡·Î Àü´ÞµÇÁö ¾Ê´Â´Ù (see section ¹¬½ÃÀû ±ÔÄ¢¿¡ ÀÇÇØ »ç¿ëµÇ´Â º¯¼ö(Variables Used by Implicit Rules)). ¼­ºê-make´Â ÀÚ½ÅÀ» À§Çؼ­ À̵éÀ» Á¤ÀÇÇÒ °ÍÀÌ´Ù.

¿©·¯ºÐÀÌ Æ¯Á¤ º¯¼ö°¡ ¼­ºê-make¿¡ ÀͽºÆ÷Æ®µÇ±â¸¦ ¿øÇÑ´Ù¸é ´ÙÀ½°ú °°ÀÌ export Áö½Ã¾î¸¦ »ç¿ëÇ϶ó:

export variable ...

¾î¶² º¯¼ö°¡ ÀͽºÆ÷Æ®µÇ´Â °ÍÀ» ±ÝÁöÇÏ°íÀÚ ÇÑ´Ù¸é ´ÙÀ½°ú °°ÀÌ unexport µð·ºÆ¼ºê¸¦ »ç¿ëÇÑ´Ù:

unexport variable ...

Æí¸®ÇÏ°Ô ¿©·¯ºÐÀº ¾î¶² º¯¼ö¸¦ Á¤ÀÇÇϸ鼭 µ¿½Ã¿¡ ±×°ÍÀ» ÀͽºÆ÷Æ®ÇÒ ¼ö ÀÖ´Ù:

export variable = value

ÀÌ°ÍÀº ´ÙÀ½°ú °°Àº °á°ú¸¦ °¡Áø´Ù:

variable = value
export variable

±×¸®°í

export variable := value

´Â ´ÙÀ½°ú °°Àº °á°ú¸¦ °¡Áø´Ù:

variable := value
export variable

ºñ½ÁÇÏ°Ô

export variable += value

´Â ´ÙÀ½°ú µ¿ÀÏÇÏ´Ù:

variable += value
export variable

See section º¯¼ö¿¡ ÅؽºÆ®¸¦ µ¡ºÙÀ̱â(Appending More Text to Variables).

¿©·¯ºÐÀº export¿Í unexport Áö½Ã¾îµéÀÌ ±×µéÀÌ ½©¿¡¼­ ÀÛµ¿ÇÏ´Â °Í°ú µ¿ÀÏÇÑ ¹æ½ÄÀ¸·Î make¿¡¼­ ÀÛµ¿ÇÑ´Ù´Â °ÍÀ» ¾Ë¾ÒÀ» ¼öµµ ÀÖ´Ù.

¸ðµç º¯¼öµéÀÌ µðÆúÆ®·Î ÀͽºÆ÷Æ®µÇ´Â °ÍÀ» ¿øÇÑ´Ù¸é ¿©·¯ºÐÀº exportÀ» ´ÙÀ½°ú °°ÀÌ È¦·Î ¾²¸é µÈ´Ù:

export

ÀÌ°ÍÀº make¿¡°Ô export³ª unexport Áö½Ã¾î¿¡¼­ ¸í½ÃÀûÀ¸·Î ¾ð±ÞµÇÁö ¾ÊÀº º¯¼öµéÀº ¸ðµÎ ÀͽºÆ÷Æ®µÇ¾î¾ß ÇÑ´Ù´Â °ÍÀ» ¸»ÇÑ´Ù. unexport Áö½Ã¾î¿¡¼­ ÁÖ¾îÁø ÀÓÀÇÀÇ º¯¼ö´Â ¿©ÀüÈ÷ ÀͽºÆ÷Æ®µÇÁö ¾ÊÀ» °ÍÀÌ´Ù. ¿©·¯ºÐÀÌ È¦·Î export¸¸ »ç¿ëÇÏ¿© º¯¼öµéÀ» µðÆúÆ®·Î ÀͽºÆ÷Æ®ÇÑ´Ù¸é ±×°ÍÀÇ À̸§ÀÌ ¾ËÆĺª°ú ¼ýÀÚ ±×¸®°í ¹ØÁÙÀÌ ¾Æ´Ñ °ÍÀ» ´ã°í ÀÖÀ» ¶§, ¸í½ÃÀûÀ¸·Î export Áö½Ã¾î¿¡¼­ ¾ð±ÞÇÏÁö ¾Ê´Â ÇÑ, ÀͽºÆ÷Æ®µÇÁö ¾ÊÀ» °ÍÀÌ´Ù.

export Áö½Ã¾î¸¦ Ȧ·Î ½á¼­ ¾ò¾î³½ ÇൿÀº GNU makeÀÇ ´õ ¿À·¡µÈ ¹öÀüµé¿¡¼­ µðÆúÆ®À̾ú´Ù. ¿©·¯ºÐÀÇ makefileµéÀÌ ÀÌ·± Çൿ¿¡ ÀÇÁ¸ÇÏ°í ¿©·¯ºÐÀÌ makeÀÇ ¿¹Àü ¹öÀüµé°úÀÇ È£È¯¼ºÀ» ¾ò°íÀÚ ÇÑ´Ù¸é ¿©·ÁºÐÀº Ư¼öÇÑ Å¸°Ù .EXPORT_ALL_VARIABLES¸¦ export Áö½Ã¾î¸¦ »ç¿ëÇÏ´Â ´ë½Å ¾µ ¼ö ÀÖ´Ù. ÀÌ°ÍÀº ¿À·¡µÈ makeµé¿¡ ÀÇÇؼ­ ¹«½ÃµÉ °ÍÀÌ´Ù. ¹Ý¸é¿¡ export Áö½Ã¾î´Â ¹®¹ý ¿¡·¯¸¦ À¯¹ßÇÒ °ÍÀÌ´Ù.

ºñ½ÁÇÏ°Ô ¿©·¯ºÐÀº unexport¸¦ Ȧ·Î ½á¼­ make°¡ µðÆúÆ®·Î, º¯¼öµéÀ» ¸ðµÎ ÀͽºÆ÷Æ®ÇÏÁö ¾Êµµ·Ï Áö½ÃÇÒ ¼ö ÀÖ´Ù. ÀÌ°ÍÀº µðÆúÆ® ÇൿÀ̱⠶§¹®¿¡ export°¡ Ȧ·Î ÀÌÀü¿¡(¾Æ¸¶ includeµÈ makefile¿¡¼­) »ç¿ëµÇ¾úÀ» ¶§¿¡¸¸, ÀÌ°ÍÀ» »ç¿ëÇÒ ÇÊ¿ä°¡ ÀÖÀ» °ÍÀÌ´Ù. export°ú unexport¸¦ µÑ´Ù Ȧ·Î ½á¼­ ¾î¶² ¸í·Éµé¿¡ ´ëÇؼ­ º¯¼öµéÀÌ ÀͽºÆ÷Æ®µÇ°í ´Ù¸¥ °Íµé¿¡ ´ëÇؼ­´Â ÀͽºÆ÷Æ®µÇÁö ¾Êµµ·Ï ÇÒ ¼ö ¾ø´Ù. Ȧ·Î »ç¿ëµÈ export³ª unexport Áö½Ã¾î Áß¿¡¼­ ¸¶Áö¸·À¸·Î »ç¿ëµÈ °Í¸¸ÀÌ makeÀÇ Àüü ½ÇÇà Çൿ¾ç½ÄÀ» °áÁ¤ÇÑ´Ù.

Ư¼öÇÑ ±â´ÉÀ¸·Î½á, º¯¼ö MAKELEVEL´Â, ÀÌ°ÍÀÌ À­·¹º§¿¡¼­ ¾Æ·¡·¹º§·Î Àü´ÞµÉ ¶§, º¯°æµÈ´Ù. ÀÌ º¯¼öÀÇ °ªÀº ·¹º§ÀÇ ±íÀ̸¦ ½ÊÁø¼ö·Î Ç¥ÇöÇÑ ¹®ÀÚ¿­ÀÌ´Ù. ±× °ªÀº Åé-·¹º§ make¿¡ ´ëÇؼ­ `0'ÀÌ´Ù; ¼­ºê-make¿¡ ´ëÇؼ­´Â `1'ÀÌ°í, ¼­ºê-¼­ºê-make¿¡ ´ëÇؼ­´Â `2'ÀÌ´Ù. ÀÌ·± ½ÄÀ¸·Î °è¼ÓµÈ´Ù. Áõ°¡´Â make°¡ ¾î¶² ¸í·É¿¡ ´ëÇÑ È¯°æÀ» ¼Â¾÷ÇÒ ¶§ ¹ß»ýÇÑ´Ù.

MAKELEVELÀÇ ÁÖ¿ä »ç¿ëÀº Á¶°Ç Áö½Ã¾î (see section MakefileÀÇ Á¶°Ç ºÎºÐ(Conditional Parts of Makefiles)) ¾È¿¡¼­ ±×°ÍÀ» Å×½ºÆ®ÇÒ ¶§ÀÌ´Ù; Àç±ÍÀûÀ¸·Î ½ÇÇàµÈ´Ù¸é ÇÑ°¡Áö ¹æ½ÄÀ¸·Î ÀÛµ¿ÇÏ°í Á÷Á¢ ½ÇÇàÇÑ´Ù¸é ´Ù¸¥ ¹æ½ÄÀ¸·Î ÀÛµ¿ÇÏ´Â makefileÀ» ÀÛ¼ºÇÒ ¼ö ÀÖ´Ù.

º¯¼ö MAKEFILES¸¦ »ç¿ëÇؼ­ ¸ðµç ¼­ºê-make ¸í·ÉµéÀÌ Ãß°¡ÀÇ makefileµéÀ» »ç¿ëÇϵµ·Ï ÇÒ ¼ö ÀÖ´Ù. MAKEFILESÀÇ °ªÀº °ø¹éÀ¸·Î ºÐ¸®µÈ ÆÄÀÏ À̸§µéÀÇ ¸®½ºÆ®ÀÌ´Ù. ÀÌ º¯¼ö´Â, ¿ÜºÎ-·¹º§ makefile¾È¿¡¼­ Á¤ÀǵǾú´Ù¸é, ȯ°æÀ» ÅëÇؼ­ ¾Æ·¡·Î Àü´ÞµÈ´Ù; ±×¸®°í ³ª¼­ ÀÌ°ÍÀº ¼­ºê-make¿¡ ´ëÇؼ­, º¸ÅëÀÇ ¶Ç´Â ÁöÁ¤µÈ makefileµéÀ» Àеµ·Ï, ¿ÜºÎ makefileµéÀÇ ¸®½ºÆ®·Î Ãë±ÞµÈ´Ù. See section MAKEFILES º¯¼ö(The Variable MAKEFILES).

¼­ºê-make¿¡ ´ëÇÑ Åë½Å ¿É¼Ç(Communicating Options to a Sub-make)

`-s'¿Í `-k' °°Àº Ç÷¡±×µéÀº ÀÚµ¿À¸·Î º¯¼ö MAKEFLAGS¸¦ ÅëÇؼ­ ¼­ºê-make¿¡°Ô Àü´ÞµÈ´Ù. ÀÌ º¯¼ö´Â make¿¡ ÀÇÇؼ­ make°¡ ¹Þ´Â Ç÷¡±× ¹®ÀÚµéÀ» ´ã°í ÀÖµµ·Ï ÀÚµ¿À¸·Î ¼Â¾÷µÈ´Ù. ±×·¡¼­ `make -ks'¶ó°í Çϸé MAKEFLAGS´Â °ª `ks'¸¦ °¡Áø´Ù.

°á°úÀûÀ¸·Î ¸ðµç ¼­ºê-make´Â ±× ȯ°æ¾È¿¡¼­ MAKEFLAGS¿¡ ´ëÇÑ °ªÀ» °¡Áø´Ù. ÀÌ¿¡ ´ëÇÑ ´ëÀÀÀ¸·Î ±×°ÍÀº ±× °ªÀ¸·ÎºÎÅÍ Ç÷¡±×µéÀ» ÃëÇؼ­ ±×µéÀÌ ¸Å°³º¯¼ö·Î½á Àü´ÞµÈ °Íó·³ À̵éÀ» ó¸®ÇÑ´Ù. See section ¿É¼ÇµéÀÇ ¿ä¾à(Summary of Options).

¸í·ÉÇà¿¡¼­ Á¤ÀÇµÈ º¯¼öµé°ú ºñ½ÁÇÏ°Ô MAKEFLAGS¸¦ ÅëÇؼ­ ¼­ºê-make¿¡°Ô Àü´ÞµÈ´Ù. `='¸¦ ´ã°í ÀÖ´Â MAKEFLAGSÀÇ °ªÀÇ ¿öµåµéÀ» make´Â ±×µéÀÌ ¸í·ÉÇà¿¡ ³ªÅ¸³­ °Íó·³, º¯¼ö Á¤ÀÇ·Î Ãë±ÞÇÑ´Ù. See section º¯¼ö °ãÃľ²±â(Overriding Variables).

`-C', `-f', `-o', ±×¸®°í `-W' ¿É¼ÇµéÀº MAKEFLAGS¿¡ µé¾î°¡Áö ¾Ê´Â´Ù; ÀÌµé ¿É¼ÇµéÀº ¾Æ·¡·Î Àü´ÞµÇÁö ¾Ê´Â´Ù.

`-j' ¿É¼ÇÀº Ư¼öÇÑ °æ¿ìÀÌ´Ù (see section Æз¯·² ½ÇÇà(Parallel Execution)). ÀÌ°ÍÀ» ¾î¶² ¼ýÀÚ°ªÀ¸·Î ¼³Á¤Çϸé `-j 1'°¡ Ç×»ó ÁöÁ¤ÇÑ °ª ´ë½Å¿¡ MAKEFLAGS¿¡ µé¾î°£´Ù. ÀÌ°ÍÀº ¿Ö³Ä¸é, `-j' ¿É¼ÇÀÌ ¼­ºê-makeµé¿¡ µé¾î°£´Ù¸é ¿ä±¸ÇÑ °Íº¸´Ù ´õ ¸¹Àº ÀÛ¾÷µéÀ» º´·Ä·Î ½ÇÇàÇϵµ·Ï ÇÒ °ÍÀ̱⠶§¹®ÀÌ´Ù. `-j'¸¦ ¼ýÀÚ ¸Å°³º¯¼ö ¾øÀÌ ÁÖ¸é ÀÌ°ÍÀº ¾Æ·¡·Î Àü´ÞµÈ´Ù. ¿Ö³Ä¸é ´Ù¼ö ¹«ÇÑ(multiple infinities)¶õ 1°ª¿¡ Áö³ªÁö ¾Ê±â ¶§¹®ÀÌ´Ù.

´Ù¸¥ Ç÷¡±×µéÀº ¾Æ·¡·Î Àü´ÞÇÏ°íÀÚ ÇÏÁö ¾Ê´Â´Ù¸é ¹Ýµå½Ã ´ÙÀ½°ú °°ÀÌ MAKEFLAGSÀÇ °ªÀ» º¯°æÇØ¾ß ÇÑ´Ù:

subsystem:
        cd subdir && $(MAKE) MAKEFLAGS=

¸í·É ¶óÀÎ º¯¼ö Á¤ÀǵéÀº ½ÇÁ¦·Î MAKEOVERRIDES¶ó´Â º¯¼ö¿¡ ³ªÅ¸³ª°í MAKEFLAGS´Â ÀÌ º¯¼ö¿¡ ´ëÇÑ ÂüÁ¶¸¦ ´ã°í ÀÖ´Ù. Ç÷¡±×µéÀ» Á¤»óÀûÀ¸·Î ¾Æ·¡·Î Àü´ÞÇÏ°íÀÚ ÇÏÁö¸¸ ¸í·ÉÇà º¯¼ö Á¤ÀǵéÀº ¾Æ·¡·Î Àü´ÞÇÏ°íÀÚ ÇÏÁö ¾Ê´Â´Ù¸é ´ÙÀ½°ú °°ÀÌ MAKEOVERRIDES¸¦ ºó °ÍÀ¸·Î ¸®¼ÂÇÒ ¼ö ÀÖ´Ù:

MAKEOVERRIDES =

ÀÌ·¸°Ô ÇÏ´Â °ÍÀÌ Ç×»ó À¯¿ëÇÑ °ÍÀº ¾Æ´Ï´Ù. ±×·¯³ª ¾î¶² ½Ã½ºÅÛµéÀº ȯ°æÀÇ Å©±â°¡ ÀÛ°Ô Á¦ÇѵǾî ÀÖÀ» ¼ö ÀÖ°í ¸¹Àº Á¤º¸µéÀ» MAKEFLAGSÀÇ °ªÀ¸·Î ³Ö´Â °ÍÀº ÀÌ Á¦ÇÑÀ» ³ÑÀ»¼öµµ ÀÖ´Ù. `Arg list too long'¿Í °°Àº ¿¡·¯ ¸Þ½ÃÁö¸¦ º»´Ù¸é ÀÌ°ÍÀÌ ±×·± ¹®Á¦ÀÌ´Ù. (POSIX.2¿ÍÀÇ ¾ö°ÝÇÑ È£È¯À» À§Çؼ­ MAKEOVERRIDES¸¦ º¯°æÇÏ´Â °ÍÀº, Ư¼ö Ÿ°Ù `.POSIX'ÀÌ makefile¿¡ ÀÖ´Ù¸é, MAKEFLAGS¿¡´Â ¿µÇâÀ» ¹ÌÄ¡Áö ¾Ê´Â´Ù. ¿©·¯ºÐÀº ¾Æ¸¶µµ ÀÌ°Í¿¡ ´ëÇؼ­ ½Å°æ¾²Áö ¾ÊÀ» °ÍÀÌ´Ù.)

ºñ½ÁÇÑ º¯¼ö MFLAGSµµ ¿ª»çÀûÀΠȣȯÀ» À§Çؼ­ Á¸ÀçÇÑ´Ù. ÀÌ°ÍÀº ¸í·ÉÇà º¯¼ö Á¤ÀǵéÀ» ´ã°í ÀÖÁö ¾Ê´Ù´Â Á¡°ú, ÀÌ°ÍÀÌ ºó°ÍÀÌ ¾Æ´Ï¶ó¸é Ç×»ó ½ÃÀÛÇÑ´Ù(MAKEFLAGS´Â ÀÌ°ÍÀÌ such as `--warn-undefined-variables'°ú °°Àº ´ÜÀÏ-¹®ÀÚ ¹öÀüÀÌ ¾Æ´Ñ ¿É¼ÇÀ¸·Î ½ÃÀÛÇÒ ¶§¿¡¸¸ ÇÏÀÌÇÂÀ¸·Î ½ÃÀÛÇÑ´Ù)´Â Á¡À» Á¦¿ÜÇÏ°í MAKEFLAGS°ú µ¿ÀÏÇÑ °ªÀ» °¡Áø´Ù. MFLAGS´Â ÀüÅëÀûÀ¸·Î Àç±ÍÀûÀÎ make ¸í·É¾È¿¡¼­ ´ÙÀ½°ú °°ÀÌ ¸í½ÃÀûÀ¸·Î »ç¿ëµÈ´Ù:

subsystem:
        cd subdir && $(MAKE) $(MFLAGS)

±×·¯³ª ÀÌÁ¦ MAKEFLAGS´Â ÀÌ·± »ç¿ëÀ» ¿©ºÐÀÇ °ÍÀ¸·Î ¸¸µé¾ú´Ù. makefileµéÀÌ ¿À·¡µÈ make ÇÁ·Î±×·¥µé¿¡ ´ëÇؼ­ ȣȯÀÌ µÇµµ·Ï Çϱ⸦ ¿øÇÑ´Ù¸é, ÀÌ·± Å×Å©´ÐÀ» »ç¿ëÇÏÀÚ; ÀÌ°ÍÀº Á» ´õ Çö´ëÀûÀÎ make ¹öÀüµé¿¡¼­µµ Àß ÀÛµ¿ÇÒ °ÍÀÌ´Ù.

MAKEFLAGS º¯¼ö´Â, make¸¦ ½ÇÇàÇÒ ¶§¸¶´Ù ¼³Á¤µÇ´Â, `-k' (see section ¿É¼ÇµéÀÇ ¿ä¾à(Summary of Options))¿Í °°Àº ¾î¶² ¿É¼ÇµéÀ» °¡Áö±â¸¦ ¿øÇÑ´Ù¸é À¯¿ëÇÒ ¼ö ÀÖ´Ù. makefile¾È¿¡¼­, ÀÌ makefile¿¡ ´ëÇؼ­ ¿µÇâÀ» ¹ÌÃÄ¾ß ÇÏ´Â Ãß°¡ÀÇ ÇÁ·¡±×µéÀ» ÁöÁ¤Çϱâ À§Çؼ­, MAKEFLAGS¸¦ ¼³Á¤ÇÒ ¼öµµ ÀÖ´Ù. (MFLAGS´Â ÀÌ·±½ÄÀ¸·Î »ç¿ëµÉ ¼ö ¾ø´Ù. ÀÌ º¯¼ö´Â ȣȯ¼ºÀ» À§Çؼ­¸¸ ¼³Á¤µÈ´Ù; make´Â ¿©·¯ºÐÀÌ ÀÌ°ÍÀ» À§Çؼ­ ¼³Á¤ÇÑ °ªÀ» ¾î¶²½ÄÀ¸·Îµç Çؼ®ÇÏÁö ¾Ê´Â´Ù.)

make°¡ MAKEFLAGSÀÇ °ªÀ» Çؼ®ÇÒ ¶§(ȯ°æÀ̳ª makefile·ÎºÎÅÍ), ÀÌ°ÍÀº ±× °ªÀÌ ÇÏÀÌÇÂÀ¸·Î ½ÃÀÛÇÏÁö ¾Ê´Â´Ù¸é, ÇÏÀÌÇ Çϳª¸¦ ¾Õ¿¡´Ù ¸ÕÀú ´Ü´Ù. ±×¸®°í ³ª¼­ ±× °ªÀ» °ø¹éÀ¸·Î ºÐ¸®µÈ ¿öµåµé·Î ÀÚ¸£°í ÀÌµé ¿öµåµéÀÌ ¸í·ÉÇà¿¡¼­ ÁÖ¾îÁø ¿É¼ÇµéÀΰÍó·³ ÀÌ·± ¿öµåµéÀ» ÆĽÌÇÑ´Ù(`-C', `-f', `-h', `-o', `-W', ±×¸®°í ±ä-À̸§ ¹öÀüµéÀº ¹«½ÃµÇ´Â °ÍÀº Á¦¿Ü; ±×¸®°í ¹«È¿ÇÑ ¿É¼Ç¿¡ ´ëÇؼ­ ¿¡·¯´Â ¹ß»ýÇÏÁö ¾Ê´Â´Ù).

MAKEFLAGS¸¦ ȯ°æ¿¡ ³Ö´Â´Ù¸é makeÀÇ Çൿ¿¡ ¸Í·ÄÇÏ°Ô ¿µÇâÀ» ¹ÌÄ¥, make ÀڽŰú makefileÀÇ ¸ñÀûÀ» ÇØÄ¡´Â ¾î¶² ¿É¼Çµéµµ ³ÖÁö ¾Êµµ·Ï ÁÖÀÇÇØ¾ß ÇÑ´Ù. ¿¹¸¦ µé¾î¼­ `-t', `-n', ±×¸®°í `-q' ¿É¼ÇµéÀº, ÀÌ·± º¯¼öµé ÁßÀÇ Çϳª¿¡ ³Ö´Â´Ù¸é, À§ÇèÇÑ °á°úµéÀ» ³¾ °ÍÀÌ°í ºÐ¸íÈ÷ Àû¾îµµ ³î¶ó¿î ¾Æ¸¶µµ ¼ºÁú³»°Ô ¸¸µå´Â °á°úµéÀ» ¾òÀ» °ÍÀÌ´Ù.

`--print-directory' ¿É¼Ç

Àç±ÍÀû make È£ÃâÀÇ ¿©·¯ ·¹º§µéÀ» °¡Áø´Ù¸é `-w'³ª `--print-directory' ¿É¼ÇÀº make°¡ °¢ µð·ºÅ丮¸¦ ó¸®Çϱ⠽ÃÀÛÇÒ ¶§¿Í make°¡ ÀÌ°ÍÀÇ Ã³¸®¸¦ Á¾·áÇÒ ¶§ ÀÌ°ÍÀ» º¸¿©ÁÜÀ¸·Î½á Á» ´õ ÀÌÇØÇϱ⠽¬¿î Ãâ·ÂÀ» ÇÑ´Ù. ¿¹¸¦ µé¾î¼­ `make -w'°¡ `/u/gnu/make' µð·ºÅ丮¾È¿¡¼­ ½ÇÇàµÇ¸é make´Â ´ÙÀ½°ú °°Àº ÇüÅÂÀÇ ¶óÀÎÀ» Ãâ·ÂÇÒ °ÍÀÌ´Ù:

make: Entering directory `/u/gnu/make'.

±×¸®°í 󸮰¡ ¿Ï·áµÇ¸é ´Ù¸¥ °ÍÀ» Çϱâ Àü¿¡, ´ÙÀ½°ú °°Àº ¶óÀÎÀ»:

make: Leaving directory `/u/gnu/make'.

Ãâ·ÂÇÑ´Ù.

ÀϹÝÀûÀ¸·Î ÀÌ ¿É¼ÇÀ» ÁöÁ¤ÇÒ ÇÊ¿ä°¡ ¾ø´Ù. ¿Ö³Ä¸é `make'°¡ ÀÌ°ÍÀ» ´ë½Å Çϱ⠶§¹®ÀÌ´Ù: `-w'´Â `-C' ¿É¼ÇÀ» »ç¿ëÇÒ ¶§, ±×¸®°í ¼­ºê-makeµé ¾È¿¡¼­ ÀÚµ¿À¸·Î ÄÑÁø´Ù. make´Â `-s'µµ ¶ÇÇÑ »ç¿ëÇÑ´Ù¸é `-w'¸¦ ÀÚµ¿À¸·Î ÄÑÁö ¾ÊÀ» °ÍÀÌ´Ù. ÀÌ°ÍÀº Á¶¿ëÈ÷ Ç϶ó´Â ¿É¼ÇÀÌ´Ù. ¶Ç´Â `--no-print-directory' ¶ó´Â ¿É¼ÇÀ» »ç¿ëÇؼ­ ¸í½ÃÀûÀ¸·Î ±×·¸°Ô ÇÏ´Â °ÍÀ» ÇÏÁö ¸øÇϵµ·Ï ÇÒ ¼ö ÀÖ´Ù.

¸í·ÉµéÀ» ¹­¾î¼­ Á¤ÀÇÇϱâ(Defining Canned Command Sequences)

µ¿ÀÏÇÑ ¸í·É ½ÃÄö½º°¡ ´Ù¾çÇÑ Å¸°ÙµéÀ» ¸¸µå´Âµ¥ À¯¿ëÇÒ ¶§, ±×°ÍÀ» define¶ó´Â Áö½Ã¾î·Î ¹­ÀÎ ½ÃÄö½º(canned sequence)·Î Á¤ÀÇÇÒ ¼ö ÀÖ°í ±× ¹­ÀÎ ½ÃÄö½º¸¦ ±×·± Ÿ°Ùµé¿¡ ´ëÇÑ ±ÔÄ¢µé·ÎºÎÅÍ ÂüÁ¶ÇÒ ¼ö ÀÕ´Ù. ¹­ÀÎ ½ÃÄö½º´Â ½ÇÁ¦·Î ÇϳªÀÇ º¯¼öÀÌ´Ù. ±×·¡¼­ ±× À̸§Àº ´Ù¸¥ º¯¼ö À̸§µé°ú °°¾Æ¼­´Â ¾ÈµÈ´Ù.

´ÙÀ½Àº ¸í·ÉµéÀÇ ¹­ÀÎ ½ÃÄö½º Çϳª¸¦ Á¤ÀÇÇÏ´Â ¿¹Á¦ÀÌ´Ù:

define run-yacc
yacc $(firstword $^)
mv y.tab.c $@
endef

¿©±â¼­ run-yacc´Â Á¤Àǵǰí ÀÖ´Â º¯¼öÀÇ À̸§ÀÌ´Ù; endef´Â Á¤ÀÇÀÇ ¸¶Áö¸·À» Ç¥½ÃÇÑ´Ù; ÀÌµé »çÀÌÀÇ ¶óÀεéÀÌ ¸í·ÉµéÀÌ´Ù. define Áö½Ã¾î´Â ¹­ÀÎ ½ÃÄö½º¾È¿¡¼­ º¯¼ö ÂüÁ¶¿Í ÇÔ¼ö È£ÃâµéÀ» È®ÀåÇÏÁö ¾Ê´Â´Ù; `$' ¹®ÀÚµé, °ýÈ£µé, º¯¼ö À̸§µé, ±âŸ µîµî ¸ðµÎ´Â Á¤ÀÇÇÏ°í ÀÖ´Â º¯¼öÀÇ °ªÀÇ ÀϺΰ¡ µÈ´Ù. defineÀÇ ¿ÏÀüÇÑ ¼³¸í¿¡ ´ëÇؼ­, See section Ãà¾î º¯¼ö Á¤ÀÇ(Defining Variables Verbatim).

ÀÌ ¿¹Á¦ÀÇ Ã¹¹ø° ¸í·ÉÀº Yacc¸¦, ÀÌ ¹­ÀÎ ½ÃÄö½º¸¦ »ç¿ëÇÏ´Â ±ÔÄ¢ÀÇ Ã¹¹ø° Á¾¼Ó¹°ÀÌ¸é ¹«¾ùÀ̵çÁö ÀÌ°Í¿¡ ´ëÇؼ­, ½ÇÇà½ÃŲ´Ù. YaccÀÇ °á°ú ÆÄÀÏÀº Ç×»ó `y.tab.c'¶ó´Â À̸§ÀÌ´Ù. µÎ¹ø° ¸í·ÉÀº ±× ±ÔÄ¢ÀÇ Å¸°Ù ÆÄÀÏ À̸§À¸·Î ÀÌ °á°ú¸¦ µ¤¾î¾´´Ù.

¹­ÀÎ ½ÃÄö½º¸¦ »ç¿ëÇÏ·Á¸é ±× º¯¼ö¸¦ ¾î¶² ±ÔÄ¢ÀÇ ¸í·Éµé¾È¿¡ ´ëÀÔÇÏ¸é µÈ´Ù. ÀÌ°ÍÀ» ´Ù¸¥ º¯¼ö(see section º¯¼ö ÂüÁ¶ÀÇ ±âº»(Basics of Variable References)) µé ó·³ ´ëÀÔÇÒ ¼ö ÀÖ´Ù. define¿¡ ÀÇÇؼ­ Á¤ÀÇµÈ º¯¼öµéÀº Àç±ÍÀûÀ¸·Î È®ÀåµÇ´Â º¯¼öµéÀ̱⠶§¹®¿¡ define¾È¿¡¼­ ÀÛ¼ºÇÏ´Â ¸ðµç º¯¼ö ÂüÁ¶µéÀº À̶§ È®ÀåµÈ´Ù. ¿¹¸¦ µé¾î¼­:

foo.c : foo.y
        $(run-yacc)

`foo.y'´Â ÀÌ°ÍÀÌ run-yaccÀÇ °ª¾È¿¡ ³ªÅ¸³¯ ¶§, `$^' º¯¼ö¿¡ ´ëÀԵǸç `foo.c'°¡ `$@'¿¡ ´ëÇؼ­ ´ëÀԵȴÙ.

ÀÌ°ÍÀº Çö½ÇÀûÀÎ ¿¹Á¦ÀÌÁö¸¸ ÀÌ ±¸Ã¼ÀûÀÎ °ÍÀº ½ÇÁ¦ÀÇ °æ¿ì º°·Î ÇÊ¿ä°¡ ¾ø´Â °ÍÀÌ´Ù. ¿Ö³Ä¸é make´Â Æ÷ÇÔµÈ ÆÄÀÏÀ̸§µé¿¡ ±â¹ÝÇؼ­ ÀÌ·± ¸í·ÉµéÀ» ÃßÃøÇس»´Â ¹¬½ÃÀû ±ÔÄ¢À» °®°í Àֱ⠶§¹®ÀÌ´Ù (see section ¹¬½ÃÀû ±ÔÄ¢(Using Implicit Rules)).

¸í·É ½ÇÇà¿¡¼­ ¹­ÀÎ ½ÃÄö½ºÀÌ °¢ ¶óÀÎÀº ±× ¶óÀÎÀÌ ±ÔÄ¢¿¡ Ȧ·Î ³ªÅ¸³­ °Íó·³, ¾Õ¿¡ ÅÇ ¹®ÀÚ¸¦ ´Þ°í ÀÖ´Â °Íó·³, Ãë±ÞµÈ´Ù. Ưº°È÷ make´Â °¢ ¶óÀο¡ ´ëÇؼ­ ºÐ¸®µÈ ¼­ºê½©À» È£ÃâÇÑ´Ù. ¿©·¯ºÐÀº ¹­ÀÎ ½ÃÄö½º¿¡ ÀÕ´Â °¢ ¶óÀÎÀÇ ¾Õ¿¡´Ù ¸í·É ¶óÀε鿡 ¿µÇâÀ» ¹ÌÄ¡´Â Ư¼ö Á¢µÎ ¹®ÀÚ(`@', `-', and `+')µéÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù. See section ±ÔÄ¢³» ¸í·É ÀÛ¼º(Writing the Commands in Rules). ¿¹¸¦ µé¾î¼­ ´ÙÀ½°ú °°Àº ¹­ÀÎ ½ÃÄö½º¸¦ »ç¿ëÇؼ­:

define frobnicate
@echo "frobnicating target $@"
frob-step-1 $< -o $@-step-1
frob-step-2 $@-step-1 -o $@
endef

make´Â ù¹ø° ¶óÀÎ, echo ¸í·É ÀÚü¸¦ ¿¡ÄÚÇÏÁö ¾ÊÀ» °ÍÀÌ´Ù. ±×·¯³ª ´ÙÀ½ µÎ ¶óÀεéÀº ¿¡ÄÚÇÒ °ÍÀÌ´Ù.

ÇÑÆí ¹­ÀÎ ½ÃÄö½º¸¦ ÂüÁ¶ÇÏ´Â ¸í·É ¶óÀο¡ ºÙÀº Á¢µÎ ¹®ÀÚµéÀº ±× ½ÃÄö½º¿¡ ÀÖ´Â °¢ ¶óÀο¡ ´ëÇؼ­ Àû¿ëµÈ´Ù. ±×·¡¼­ ´ÙÀ½ ¶óÀÎÀº:

frob.out: frob.in
	@$(frobnicate)

¾î¶² ¸í·Éµµ ¿¡ÄÚÇÏÁö ¾Ê´Â´Ù. (`@'¿¡ ´ëÇÑ ¿ÏÀüÇÑ ¼³¸í¿¡ ´ëÇؼ­, See section ¸í·É ¿¡ÄÚ(Command Echoing).)

ºó ¸í·É »ç¿ëÇϱâ(Using Empty Commands)

¾Æ¹«°Íµµ ÇÏÁö ¾Ê´Â ¸í·ÉµéÀ» Á¤ÀÇÇÏ´Â °ÍÀÌ ¶§¶§·Î À¯¿ëÇÏ´Ù. ÀÌ°ÍÀº °ø¹é¿Ü¿¡ ¾Æ¹«°Íµµ ¾ø´Â ¸í·ÉÀ» ÁÜÀ¸·Î½á Á¤ÀÇµÉ ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î¼­:

target: ;

ÀÌ°ÍÀº `target'¿¡ ´ëÇؼ­ ºó ¸í·É ¹®ÀÚ¿­À» Á¤ÀÇÇÑ´Ù. ¶Ç´Â ºó ¸í·É ¹®ÀÚ¿­À» Á¤ÀÇÇϱâ À§Çؼ­ Åǹ®ÀÚ·Î ½ÃÀÛÇÏ´Â ÇÑ ¶óÀÎÀ» »ç¿ëÇÒ¼öµµ ÀÖÁö¸¸ ÀÌ°ÍÀº ±×·± ¶óÀÎÀÌ ºó°Íó·³ º¸ÀÌÁö ¾Ê±â ¶§¹®¿¡ È¥µ¿À» ÀÏÀ¸Å³ ¼ö ÀÖ´Ù.

¾Æ¹«°Íµµ ÇÏÁö ¾Ê´Â ¸í·ÉÀ» ¿Ö Á¤ÀÇÇØ¾ß Çұ ´ëÇؼ­ ÀǾÆÇØ ÇÒ·±Áöµµ ¸ð¸£°Ú´Ù. ¾î¶² Ÿ°ÙÀÌ ¹¬½ÃÀû ¸í·Éµé(¹¬½ÃÀû ±ÔÄ¢µé·ÎºÎÅÍ ¶Ç´Â .DEFAULT Ư¼ö Ÿ°ÙÀ¸·ÎºÎÅÍ; see section ¹¬½ÃÀû ±ÔÄ¢(Using Implicit Rules) ±×¸®°í see section ÃÖÈÄÀÇ µðÆúÆ® ±ÔÄ¢ Á¤ÀÇ(Defining Last-Resort Default Rules))À» ¾òÁö ¸øÇϵµ·Ï ÇÏ´Â °ÍÀÌ ±× À¯ÀÏÇÑ ÀÌÀ¯ÀÌ´Ù.

½ÇÁ¦ ÆÄÀÏÀÌ ¾Æ´ÏÁö¸¸ ±×µéÀÇ Á¾¼Ó¹°µéÀÌ ´Ù½Ã ¸¸µé¾îÁú ¼ö ÀÖµµ·ÏÇϱâ À§Çؼ­¸¸ Á¸ÀçÇϴ Ÿ°Ùµé¿¡ ´ëÇؼ­ ºó ¸í·É ¹®ÀÚ¿­À» °ðÀß Á¤ÀÇÇÒ ¼öµµ ÀÖ´Ù. ±×·¯³ª ÀÌ°ÍÀº ±×·¸°Ô Çϱâ À§ÇÑ °¡Àå ÁÁÀº ¹æ¹ýÀÌ ¾Æ´Ï´Ù. ¿Ö³Ä¸é Á¾¼Ó¹°µéÀÌ, Ÿ°Ù ÆÄÀÏÀÌ ½ÇÁ¦·Î Á¸ÀçÇÑ´Ù¸é, Á¦´ë·Î ´Ù½Ã ¸¸µé¾îÁöÁö ¾ÊÀ» °ÍÀ̱⠴빮ÀÌ´Ù. ÀÌ·¸°Ô Çϱâ À§ÇÑ Á» ´õ ³ªÀº ¹æ¹ýÀ» ã´Â´Ù¸é See section °¡Â¥ ¸ñÀû¹°(Phony Targets).


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