make
½ÇÇà ¹æ¹ý(How to Run make
)
¾î¶² ÇÁ·Î±×·¥À» ¾î¶»°Ô ÀçÄÄÆÄÀÏÇÒ °ÍÀΰ¡¸¦ ¸»ÇÏ´Â makefileÀº ÇÑ°¡Áö
ÀÌ»óÀÇ ¹æ¹ýÀ¸·Î »ç¿ëµÉ ¼ö ÀÖ´Ù. °¡Àå °£´ÜÇÑ »ç¿ëÀº out of dateÀÎ ¸ðµç
ÆÄÀÏÀ» ÀçÄÄÆÄÀÏÇÏ´Â °ÍÀÌ´Ù. º¸Åë makefileµéÀº ¿©·¯ºÐÀÌ make
¸¦
¸Å°³º¯¼ö ¾øÀÌ ½ÇÇàÇÑ´Ù ÇÏ´õ¶óµµ ±×·¸°Ô Çϵµ·Ï ÀÛ¼ºµÈ´Ù.
±×·¯³ª ¿©·¯ºÐÀº ÀÌ·± ÆÄÀϵé Áß¿¡¼ ¸î°³¸¸ ¾÷µ¥ÀÌÆ®ÇÏ°íÀÚ ÇÒ·±Áöµµ ¸ð¸¥´Ù; ¿©·¯ºÐÀº ´Ù¸¥ ÄÄÆÄÀÏ·¯³ª ´Ù¸¥ ÄÄÆÄÀÏ ¿É¼ÇµéÀ» »ç¿ëÇÏ°íÀÚ ÇÒ·±Áöµµ ¸ð¸¥´Ù; ¿©·¯ºÐÀº ¶Ç´Â, ±×°ÍµéÀ» º¯°æÇÏÁö ¾Ê°í¼ ¾î¶² ÆÄÀÏÀÌ out of dateÀÎÁö¸¦ ¾Ë¾Æ³»°íÀÚ ÇÒ·±Áöµµ ¸ð¸¥´Ù.
¿©·¯ºÐÀÌ make
¸¦ ½ÇÇàÇÒ ¶§ ¸Å°³º¯¼öµéÀ» ÁÖ¾î¼ ¿©·¯ºÐÀÌ ÀÌ·±
°ÍµéÀ̳ª ´Ù¸¥ ¸¹Àº °ÍµéÀ» ÇÒ ¼ö ÀÖ´Ù.
make
ÀÇ Á¾·á ÄÚµå´Â Ç×»ó ´ÙÀ½ ¼¼°¡Áö °ªµé ÁßÀÇ ÇϳªÀÌ´Ù:
0
make
°¡ ¼º°øÇϸé Á¾·á ÄÚµå´Â 0ÀÌ´Ù.
2
1
make
°¡ ¾î¶² Ÿ°ÙÀÌ ¾ÆÁ÷ up to
date°¡ ¾Æ´Ï¶ó°í ÆÇ´ÜÇϸé Á¾·á ÄÚµå´Â 1ÀÌ´Ù.
See section ¸í·É ½ÇÇà ´ë½Å¿¡...(Instead of Executing the Commands).
makefileÀÇ À̸§À» ÁöÁ¤ÇÏ´Â ¹æ¹ýÀº `-f'³ª `--file' ¿É¼ÇÀ» »ç¿ëÇÏ´Â °ÍÀÌ´Ù(`--makefile'µµ ÀÛµ¿ÇÑ´Ù). ¿¹¸¦ µé¾î¼ `-f altmake'¶ó´Â ¿É¼ÇÀº `altmake'À» makefile·Î »ç¿ëÇ϶ó°í ¸»ÇÏ´Â °ÍÀÌ´Ù.
`-f' Ç÷¡±×¸¦ ¿©·¯¹ø »ç¿ëÇÏ¿´°í °¢°¢ÀÇ `-f' µÚ¿¡ ¸Å°³º¯¼ö°¡ µû¸¥´Ù¸é ¸ðµç ÁöÁ¤µÈ ÆÄÀϵéÀº ¼·Î ¹¿©¼ makefile·Î »ç¿ëµÈ´Ù.
`-f' ¶Ç´Â `--file' Ç÷¡±×¸¦ »ç¿ëÇÏÁö ¾Ê´Â´Ù¸é `GNUmakefile', `makefile', ±×¸®°í `Makefile'¸¦ ÀÌ ¼ø¼´ë·Î ÀÖ³ª ¾ø³ª °Ë»çÇغ¸°í Àִ ù¹ø°ÀÇ °ÍÀ» ¶Ç´Â ¸¸µé¾îÁú ¼ö Àִ ù¹ø°ÀÇ °ÍÀ» »ç¿ëÇÏ´Â °ÍÀÌ µðÆúÆ®ÀÌ´Ù. (see section Makefiles ÀÛ¼º(Writing Makefiles)).
goals˼ make
°¡ ±Ã±ØÀûÀ¸·Î ¾÷µ¥ÀÌÆ®ÇÏ·Á°í ÇÒ Å¸°ÙµéÀÌ´Ù.
´Ù¸¥ Ÿ°ÙµéÀº ±×µéÀÌ goalÀÇ Á¾¼Ó¹°À̳ª goalsÀÇ Á¾¼Ó¹°ÀÇ Á¾¼Ó¹° µîÀ¸·Î
³ªÅ¸³´Ù¸é ¾÷µ¥ÀÌÆ®µÈ´Ù.
µðÆúÆ®·Î goalÀº makefileÀÇ Ã¹¹ø° Ÿ°ÙÀÌ´Ù(Á¡À¸·Î ½ÃÀÛÇϴ Ÿ°ÙÀº °è»êÇÏÁö ¾Ê´Â´Ù). ±×·¯¹Ç·Î makefileµéÀº º¸Åë ù¹ø° Ÿ°ÙÀÌ Àüü ÇÁ·Î±×·¥À» ÄÄÆÄÀÏÇϱâ À§ÇÑ °ÍÀ̳ª ±×µéÀÌ ¼³¸íÇÏ´Â ÇÁ·Î±×·¥µéÀ» ÄÄÆÄÀÏÇϱâ À§ÇÑ °ÍÀÌ´Ù. makefileÀÇ Ã¹¹ø° ±ÔÄ¢ÀÌ ¿©·¯°³ÀÇ Å¸°ÙµéÀ» °¡Áø´Ù¸é ±× ±ÔÄ¢ÀÇ Ã¹¹ø° Ÿ°ÙÀÌ, Àüü ¸®½ºÆ®°¡ ¾Æ´Ï¶ó, µðÆúÆ® goalÀÌ µÈ´Ù.
¿©·¯ºÐÀº make
¿¡´Ù ´Ù¸¥ goalÀ̳ª ¸Å°³º¯¼ö¸¦ °¡Áø goalÀ» ÁöÁ¤ÇÒ ¼ö
ÀÖ´Ù. goalÀÇ À̸§À» ¸Å°³º¯¼öó·³ »ç¿ëÇÏ¸é µÈ´Ù. ¸î°³ÀÇ goalÀ» ÁöÁ¤ÇÑ´Ù¸é
make
´Â °¢°¢À» ÁÖ¾îÁø Â÷·Ê´ë·Î ó¸®ÇÑ´Ù.
makefile¿¡ ÀÖ´Â ÀÓÀÇÀÇ Å¸°ÙÀº goal·Î ÁöÁ¤µÉ ¼ö ÀÖ´Ù(±×°ÍÀÌ `-'·Î
½ÃÀÛÇϰųª `='¸¦ ´ã°í ÀÖÁö ¾Ê´Ù¸é ¸»ÀÌ´Ù. ÀÌ·± °æ¿ì
ÀϹÝÀûÀÎ ¿É¼ÇÀÎ switch³ª º¯¼ö Á¤ÀÇ·Î °¢°¢ »ý°¢µÇ¾îÁø´Ù.)
make
°¡ ±×°ÍµéÀ» ¸¸µå´Â ¹æ¹ýÀ» ¸»ÇÑ ¹¬½ÃÀû ±ÔÄ¢µéÀ» ãÀ»¼ö¸¸
ÀÖ´Ù¸é, makefile¿¡ ¾ø´Â Ÿ°Ùµéµµ ÁöÁ¤µÉ ¼ö ÀÖ´Ù.
Make
´Â Ư¼öº¯¼ö MAKECMDGOALS
¸¦ ¸í·É ¶óÀο¡¼
¿©·¯ºÐÀÌ ÁöÁ¤ÇÑ goalµéÀÇ ¸®½ºÆ®·Î ÁöÁ¤ÇÒ °ÍÀÌ´Ù. ¸í·É ¶óÀο¡ ¾î¶² goalµµ
ÁöÁ¤µÇÁö ¾Ê¾Ò´Ù¸é ÀÌ º¯¼ö´Â ºó °ÍÀÌ µÈ´Ù. ÀÌ º¯¼ö´Â Ư¼öÇÑ »óȲ¿¡¼¸¸
»ç¿ëµÇ¾î¾ß ÇÑ´Ù´Â °Í¿¡ ÁÖÀÇÇÏÀÚ.
`.d' ÆÄÀϵéÀ» clean
±ÔÄ¢µé see section Á¾¼Ó¹°µéÀ» ÀÚµ¿À¸·Î »ý¼ºÇϱâ(Generating Dependencies Automatically))
µ¿¾È¿¡ Æ÷ÇÔÇÏ´Â °ÍÀ» ÇÇÇؼ make
°¡ ±×µéÀ» ´Ù½Ã Áï°¢ Á¦°ÅÇϱâ
À§Çؼ¸¸ ±×µéÀ» »ý¼ºÇÏÁö ¾Êµµ·Ï ÇÏ´Â °ÍÀÌ ÀûÀýÇÑ »ç¿ëÀÇ ¿¹ÀÌ´Ù:
sources = foo.c bar.c ifneq ($(MAKECMDGOALS),clean) include $(sources:.c=.d) endif
ÇÁ·Î±×·¥ÀÇ ÇÑ ºÎºÐ¸¸À» ÄÄÆÄÀÏÇÏ°íÀÚ Çϰųª ¿©·¯ ÇÁ·Î±×·¥µé ÁßÀÇ Çϳª¸¸ ÄÄÆÄÀÏÇÏ°íÀÚ ÇÒ °æ¿ì°¡ ¸ñÀûÀ» ÁöÁ¤ÇÏ´Â ÇÑ°¡Áö »ç¿ë¹ýÀÌ´Ù. ´Ù½Ã ¸¸µé°íÀÚ ÇÏ´Â °¢ ÆÄÀÏÀ» ¸ñÀûÀ¸·Î ÁöÁ¤ÇÏÀÚ. ¿¹¸¦ µé¾î¼ ¸î°¡Áö ÇÁ·Î±×·¥µéÀ» ´ã°í ÀÖ´Â µð·ºÅ丮¸¦ »ý°¢Çغ¸ÀÚ. ´ÙÀ½°ú °°ÀÌ ½ÃÀÛÇÏ´Â makefile°ú ÇÔ²²:
.PHONY: all all: size nm ld ar as
ÇÁ·Î±×·¥ size
¿¡ ´ëÇؼ ÀÛ¾÷ÇÏ°í ÀÖ´Ù¸é `make size'
¶ó°í Çؼ ±× ÇÁ·Î±×·¥ÀÇ ÆÄÀϵ鸸ÀÌ ÀçÄÄÆÄÀϵǵµ·Ï Çϱ⸦ ¿øÇÒ °ÍÀÌ´Ù.
¸ñÀû(goal)À» ÁöÁ¤ÇÏ´Â ´Ù¸¥ »ç¿ë¹ýÀº, ÀϹÝÀûÀÎ ¸ðµå°¡ ¾Æ´Ñ ÆÄÀϵéÀ» ¸¸µå´Â °ÍÀÌ´Ù. ¿¹¸¦ µé¾î¼ µð¹ö±ë °á°úÀÎ ÆÄÀÏÀ̳ª Å×½ºÆ®¸¦ À§Çؼ Ưº°È÷ ÄÄÆÄÀÏµÈ ÇÁ·Î±×·¥ÀÌ ÀÖÀ» ¼ö ÀÖ´Ù. À̵éÀº µðÆúÆ® ¸ñÀûÀÇ Á¾¼Ó¹°ÀÌ ¾Æ´Ñ makefile³»ÀÇ ±ÔÄ¢À» °¡Áø´Ù.
¸ñÀûÀ» ÁöÁ¤ÇÏ´Â ´Ù¸¥ »ç¿ë¹ýÀº Æ÷Ƽ Ÿ°Ù (see section °¡Â¥ ¸ñÀû¹°(Phony Targets)) À̳ª ºó Ÿ°Ù (see section À̺¥Æ®¸¦ ±â·ÏÇϱâ À§ÇÑ ºó Ÿ°Ù ÆÄÀÏ(Empty Target Files to Record Events) °ú ¿¬°áµÈ ¸í·ÉµéÀ» ½ÇÇàÇÏ´Â °ÍÀÌ´Ù. ¸¹Àº makefileµéÀÌ ¼Ò½º ÆÄÀϵéÀ» Á¦¿ÜÇÑ ¸ðµç °ÍµéÀ» »èÁ¦ÇÏ´Â `clean'À̶ó´Â À̸§ÀÇ Æ÷´Ï Ÿ°ÙÀ» ´ã°í ÀÖ´Ù. ÀÚ¿¬½º·´°Ô ÀÌ°ÍÀº ¿©·¯ºÐÀÌ `make clean'¶ó°í ¸í½ÃÀûÀ¸·Î ¿ä±¸ÇÒ ¶§¿¡¸¸ ¼öÇàµÈ´Ù. ´ÙÀ½Àº ÀüÇüÀûÀÎ Æ÷´Ï ¹× ºó Ÿ°Ù À̸§µéÀÌ´Ù. GNU ¼ÒÇÁÆ®¿þ¾î ÆÑÅ°ÁöµéÀÌ »ç¿ëÇϴ ǥÁØ Å¸°Ù À̸§µéÀÇ Àüü¸¦ º¸·Á¸é See section »ç¿ëÀÚµéÀ» À§ÇÑ Ç¥ÁØ Å¸°Ù(Standard Targets for Users).
make
¸¦ ½ÇÇàÇÔÀ¸·Î½á »ý¼ºµÇ´Â ¸ðµç ÆÄÀÏµé »èÁ¦ÇÑ´Ù.
Delete all files that are normally created by running make
.
makefile˼ make
¿¡°Ô Ÿ°ÙÀÌ up to dateÀΰ¡ ¾Æ´Ñ°¡ ¾î¶»°Ô
ÆÇ´ÜÇÒ °ÍÀΰ¡, ±×¸®°í °¢ Ÿ°ÙÀ» ¾î¶»°Ô ¾÷µ¥ÀÌÆ®ÇÒ °ÍÀΰ¡¸¦ ÁöÁ¤ÇÑ´Ù.
±×·¯³ª Ÿ°ÙÀ» ¾÷µ¥ÀÌÆ®ÇÏ´Â °ÍÀº Ç×»ó ¿©·¯ºÐÀÌ ¿øÇÏ´Â °ÍÀÌ ¾Æ´Ò ¼öµµ
ÀÖ´Ù. ¾î¶² ¿É¼ÇµéÀº make
ÀÇ ´Ù¸¥ ¾×¼ÇÀ» ÁöÁ¤ÇÑ´Ù.
make
´Â ÄÄÆÄÀÏÇÏ´Â °Íó·³
°¡ÀåÇÏÁö¸¸ ½ÇÁ¦·Î´Â ±×µéÀÇ ³»¿ë¹°µéÀ» º¯°æÇÏÁö ¾Ê´Â´Ù.
make
¿¡ ÀÇÇؼ ÇöÀç ½Ã°£À¸·Î ±â·ÏµÇ´Â ¹Ý¸é
½ÇÁ¦ º¯°æ ½Ã°£Àº µ¿ÀÏÇÏ°Ô ³²´Â´Ù. `-W' Ç÷¡±×¿Í `-n' Ç÷¡±×¸¦
»ç¿ëÇؼ ¿©·¯ºÐÀÌ Æ¯Á¤ ÆÄÀÏÀ» º¯°æÇÑ´Ù¸é ¾î¶² ÀÏÀÌ ¹ú¾îÁö´ÂÁö È®ÀÎÇÒ ¼ö
ÀÖ´Ù.
`-n' Ç÷¡±×¸¦ ÁÖ¸é make
´Â ½ÇÁ¦ ±×µéÀ» ½ÇÇàÇÏÁö ¾ÊÁö¸¸
ÀϹÝÀûÀÎ ½ÇÇà ¶§¿Í µ¿ÀÏÇÑ ¸í·ÉµéÀ» ÀμâÇÑ´Ù.
`-t' Ç÷¡±×¸¦ ÁÖ¸é make
´Â ±ÔÄ¢µé¿¡ ÀÖ´Â ¸í·ÉµéÀ» ¹«½ÃÇÏ°í
´Ù½Ã ¸¸µé¾îÁ®¾ß ÇÒ °¢ Ÿ°Ù¿¡ ´ëÇؼ touch
¶ó´Â ¸í·ÉÀ» (»ç½Ç»ó)
»ç¿ëÇÑ´Ù. `-s'³ª .SILENT
°¡ »ç¿ëµÇÁö ¾ÊÀ¸¸é, touch
¸í·É ¶ÇÇÑ ÀμâµÈ´Ù. ¼Óµµ¸¦ À§Çؼ make
´Â ½ÇÁ¦·Î ÇÁ·Î±×·¥
touch
¸¦ È£ÃâÇÏÁö ¾ÊÀ» °ÍÀÌ´Ù. ÀÌ°ÍÀº Á÷Á¢ ÀÛ¾÷ÇÑ´Ù.
`-q' Ç÷¡±×·Î make
´Â ¾Æ¹«°Íµµ Ãâ·ÂÇÏÁö ¾Ê°í ¾Æ¹«·± ¸í·Éµµ
½ÇÇàÇÏÁö ¾ÊÁö¸¸ Á¾·á »óÅ ÄÚµå´Â Ÿ°ÙÀÌ ÀÌ¹Ì °»½ÅµÈ °ÍÀ̶ó°í
»ý°¢µÇ¾îÁú ¶§¿¡¸¸ 0ÀÌ µÈ´Ù. Á¾·á »óÅ°¡ 1ÀÌ¸é ¾î¶² °»½ÅÀÌ ÇÊ¿äÇÏ´Ù´Â
°ÍÀ» ÀǹÌÇÑ´Ù. maek
°¡ ¿¡·¯¸¦ ¸¸³ª¸é Á¾·á »óÅ´ 2ÀÌ´Ù. ±×·¡¼
¿¡·¯¸¦ Ÿ°ÙÀÌ °»½Å¾ÈµÇ¾ú´Ù´Â °Í°ú ±¸ºÐÇÒ ¼ö ÀÖ´Ù.
ÀÌ·± ¼¼ Ç÷¡±×µé ÁßÀÇ Çϳª ÀÌ»óÀ» make
ÀÇ ¾î¶² È£Ãâ¾È¿¡¼
»ç¿ëÇÏ´Â °ÍÀº ¿¡·¯ÀÌ´Ù.
`-n', `-t', ±×¸®°í `-q' ¿É¼ÇµéÀº `+' ¹®ÀÚµé·Î
½ÃÀÛÇÏ´Â ¸í·É ¶óÀεéÀ̳ª `$(MAKE)'³ª `${MAKE}'
¹®ÀÚ¿µéÀ» ´ã°í ÀÖ´Â ¸í·É ¶óÀε鿡 ¿µÇâÀ» ¹ÌÄ¡Áö ¾Ê´Â´Ù. `+'
¹®ÀÚ³ª ¹®ÀÚ¿ `$(MAKE)' ¶Ç´Â `${MAKE}'¸¦ ´ã°í ÀÖ´Â
¶óÀε鸸ÀÌ ÀÌ·± ¿É¼Çµé¿¡ »ó°ü¾øÀÌ ½ÇÇàµÈ´Ù. µ¿ÀÏÇÑ ±ÔÄ¢¿¡ ÀÖ´Â ´Ù¸¥
¶óÀεéÀº ±×µéÀÌ `+'·Î ½ÃÀÛÇÏÁö ¾Ê¾Ò°Å³ª `$(MAKE)'³ª
`${MAKE}'¸¦ ´ã°í ÀÖÁö ¾Ê´Â´Ù¸é ½ÇÇàµÇÁö ¾ÊÀ» °ÍÀÌ´Ù.
(See section MAKE
º¯¼ö°¡ ÀÛµ¿ÇÏ´Â ¹æ¹ý(How the MAKE
Variable Works).)
`-W' Ç÷¡±×´Â ´ÙÀ½°ú °°Àº µÎ ±â´ÉÀ» Á¦°øÇÑ´Ù:
make
°¡ ¾î¶»°Ô ÇÒ °ÍÀΰ¡¸¦ º¼ ¼ö ÀÖ´Ù.
make
°¡ ½ÇÁ¦·Î ¸í·ÉµéÀ»
½ÇÇàÇÒ ¶§, `-W' Ç÷¡±×´Â make
°¡ ¾î¶² ÆÄÀϵéÀÌ º¯°æµÈ
°Íó·³, ½ÇÁ¦·Î ÆÄÀϵéÀ» º¯°æÇÏÁö ¾Ê°í, ÀÛµ¿ÇÑ´Ù.
`-p'¿Í `-v' ¿É¼ÇµéÀº make
³ª »ç¿ëÁßÀÎ makefile¿¡ ´ëÇÑ
Á¤º¸¸¦ ¾òÀ» ¼ö ÀÖµµ·Ï ÇÑ´Ù´Â Á¡¿¡ ÁÖ¸ñÇÏÀÚ.
(see section ¿É¼ÇµéÀÇ ¿ä¾à(Summary of Options)).
°¡²û ¼Ò½º ÆÄÀÏÀ» º¯°æÇßÁö¸¸ ±×°Í¿¡ ÀÇÁ¸ÇÏ´Â ¸ðµç ÆÄÀϵéÀ» ÀçÄÄÆÄÀÏÇÏ°íÀÚ
¿øÄ¡ ¾ÊÀ» ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î¼ ¸¹Àº ´Ù¸¥ ÆÄÀϵéÀÌ ÀÇÁ¸ÇÏ°í ÀÖ´Â ´ë»ó
Çì´õ ÆÄÀÏ¿¡´Ù ¸ÅÅ©·Î³ª ¼±¾ðÀ» Ãß°¡Çß´Ù°í °¡Á¤ÇÏÀÚ. º¸¼öÀûÀ¸·Î »ý°¢Çϸé
make
´Â Çì´õ ÆÄÀÏ ³»¿ëÀ» º¯°æÇϸé ÀÌ°Í¿¡ ÀÇÁ¸ÇÏ´Â ¸ðµç ÆÄÀϵéÀ»
ÀçÄÄÆÄÀÏÇØ¾ß ÇÑ´Ù°í °¡Á¤ÇÑ´Ù. ±×·¯³ª ±×µéÀÌ ¹Ýµå½Ã ÀçÄÄÆÄÀ쵃 ÇÊ¿ä´Â
¾ø°í ±×µéÀÌ ÄÄÆÄÀϵǴ °ÍÀ» ±â´Ù¸®¸é¼ ½Ã°£À» ³¶ºñÇÏ°í ½ÍÁö ¾ÊÀ» °ÍÀÌ´Ù.
Çì´õ ÆÄÀÏÀ» º¯°æÇϱâ Àü¿¡ ¹®Á¦µéÀ» ¿¹°ßÇÑ´Ù¸é `-t' Ç÷¡±×¸¦
»ç¿ëÇÒ ¼ö ÀÖ´Ù. ÀÌ Ç÷¡±×´Â make
°¡ ±ÔÄ¢µé ¾È¿¡ ÀÖ´Â ¸í·ÉµéÀ»
½ÇÇàÇÏÁö ¾Êµµ·Ï ÇÏ°í Ÿ°ÙÀÇ ÃÖÁ¾-º¯°æ ½Ã°£À» ¹Ù²ÞÀ¸·Î½á Ÿ°ÙÀÌ º¯°æµÈ
°ÍÀ¸·Î ¸¶Å©ÇÑ´Ù. ¿©·¯ºÐÀº ´ÙÀ½°ú °°Àº °úÁ¤À» µû¸¦ °ÍÀÌ´Ù:
make
¸¦ ½ÇÇàÇÒ ¶§¸é Çì´õ ÆÄÀÏÀÇ
º¯È´Â ¾î¶² ÀçÄÄÆÄÀϵµ ÀÏÀ¸Å°Áö ¾ÊÀ» °ÍÀÌ´Ù.
ÀÌ¹Ì Çì´õ ÆÄÀÏÀ» ¾î¶² ÆÄÀϵéÀÌ ÀçÄÄÆÄÀÏÀÌ ÇÊ¿äÇÑ ¶§¿¡ º¯°æÇÏ¿´´Ù¸é ³Ê¹« ´À¸° °ÍÀÌ¾î¼ ÀÌ·¸°Ô ÇÒ ¼ö ¾ø´Ù. ´ë½Å¿¡ ¿©·¯ºÐÀº `-o file' Ç÷¡±×¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ÀÌ°ÍÀº ƯÁ¤ ÆÄÀÏÀ» "±¸´Ú´Ù¸®(old)"·Î ¸¶Å·ÇÑ´Ù (see section ¿É¼ÇµéÀÇ ¿ä¾à(Summary of Options)). ÀÌ°ÍÀº ±× ÆÄÀÏ ÀÚü°¡ ´Ù½Ã ¸¸µé¾îÁöÁö ¾ÊÀ» °ÍÀÌ¸ç ´Ù¸¥ ¾î¶² °Íµµ ÀÌ°ÍÀ» À§Çؼ ´Ù½Ã ¸¸µé¾îÁöÁö ¾Ê¤·¸£ °ÍÀÌ´Ù. ´ÙÀ½ °úÁ¤À» µû¸£ÀÚ:
`='¸¦ ´ã°í ÀÖ´Â ¸Å°³º¯¼ö´Â ¾î¶² º¯¼öÀÇ °ªÀ» ÁöÁ¤ÇÑ´Ù: `v=x'´Â º¯¼ö vÀÇ °ªÀ» xÀ¸·Î ¼³Á¤ÇÑ´Ù. ¿©·¯ºÐÀÌ ÀÌ·±½ÄÀ¸·Î °ªÀ» ÁöÁ¤ÇÑ´Ù¸é makefile³»¿¡ ÀÖ´Â µ¿ÀÏÇÑ º¯¼öÀÇ ¸ðµç ÀϹÝÀûÀÎ ´ëÀÔÀº ¹«½ÃµÈ´Ù; ¿ì¸®´Â ÀÌ·² ¶§ ¸í·É ¶óÀÎ ¸Å°³º¯¼ö¿¡ ÀÇÇؼ overriddenµÇ¾ú´Ù°í ¸»ÇÑ´Ù.
ÀÌ·± ±â´ÉÀ» »ç¿ëÇϱâ À§ÇÑ ´ëºÎºÐÀÇ ÀϹÝÀûÀÎ ¹æ¹ýÀº ÄÄÆÄÀÏ·¯¿¡°Ô ¿ÜºÎ
Ç÷¡±×µéÀ» Àü´ÞÇÏ´Â °ÍÀÌ´Ù. ¿¹¸¦ µé¾î¼ ÀûÀýÈ÷ ÀÛ¼ºµÈ makefile¿¡¼
º¯¼ö CFLAGS
´Â C ÄÄÆÄÀÏ·¯¸¦ ½ÇÇàÇÏ´Â °¢ ¸í·É¿¡ Æ÷ÇÔµÇ°í ±×·¡¼
`foo.c'´Â ´ÙÀ½°ú °°ÀÌ ÄÄÆÄÀ쵃 °ÍÀÌ´Ù:
cc -c $(CFLAGS) foo.c
±×·¡¼ ¿©·¯ºÐÀÌ CFLAGS
¿¡ ´ëÇؼ ¼³Á¤ÇÑ °ªÀÌ¸é ¹«¾ùÀÌµç ¹ß»ýÇÏ´Â
°¢ ÄÄÆÄÀÏ¿¡ ´ëÇؼ ¿µÇâÀ» ¹ÌÄ£´Ù. makefileÀº ¾Æ¸¶µµ CFLAGS
¿¡
´ëÇÑ ÀϹÝÀûÀÎ °ªÀ¸·Î½á ´ÙÀ½°ú °°ÀÌ ÁöÁ¤ÇÒ °ÍÀÌ´Ù:
CFLAGS=-g
make
¸¦ ½ÇÇàÇÒ ¶§¸¶´Ù ¿©·¯ºÐÀº, ¿øÇÑ´Ù¸é, ÀÌ °ªÀ» ¿À¹ö¶óÀ̵åÇÒ
¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î¼ `make CFLAGS='-g -O''¶ó°í ¸»ÇÑ´Ù¸é °¢ C
ÄÄÆÄÀÏÀº `cc -c -g -O'·Î ÇàÇØÁú °ÍÀÌ´Ù. (ÀÌ°ÍÀº º¯¼öÀÇ °ªÀ»
¿À¹ö¶óÀ̵åÇÒ ¶§ º¯¼öÀÇ °ª¾ÈÀÇ ½ºÆäÀ̽ºµéÀ̳ª Ư¼ö ¹®ÀÚµéÀ» °¨½Î±â
À§Çؼ ½©¿¡¼ Àοë(quoting)À» ¾î¶»°Ô »ç¿ëÇÒ ¼ö Àִ°¡¸¦ ¿¹½ÃÇÑ´Ù.)
º¯¼ö CFLAGS
´Â, ±×µéÀ» ÀÌ·±½ÄÀ¸·Î º¯°æÇÒ ¼ö ÀÖµµ·Ï Á¸ÀçÇÏ´Â ¸¹Àº
Ç¥ÁØ º¯¼öµé Áß¿¡¼ À¯ÀÏÇÑ °ÍÀÌ´Ù. ¿ÏÀüÇÑ ¸®½ºÆ®¸¦ º¸·Á¸é
See section ¹¬½ÃÀû ±ÔÄ¢¿¡ ÀÇÇØ »ç¿ëµÇ´Â º¯¼ö(Variables Used by Implicit Rules).
makefileÀÌ ¿©·¯ºÐ ÀڽŸ¸ÀÇ Ãß°¡ÀÇ º¯¼öµéÀ» ãµµ·Ï ÇÁ·Î±×·¡¹ÖÇÒ ¼ö ÀÖ´Ù. ±×¸®°í »ç¿ëÀÚ¿¡°Ô makefileÀÌ ÀÛµ¿ÇÏ´Â ¹æ½ÄÀÇ ´Ù¸¥ ¸éµéÀ» ±× º¯¼öµéÀ» ¹Ù²ã¼ Á¦¾îÇÏ´Â ´É·ÂÀ» ÁÙ ¼ö ÀÖ´Ù.
¾î¶² º¯¼ö¸¦ ¸í·É ¸Å°³º¯¼öµé·Î ¿À¹ö¶óÀ̵åÇÒ ¶§ Àç±ÍÀûÀ¸·Î-È®ÀåµÇ´Â º¯¼ö³ª ´Ü¼øÇÏ°Ô-È®ÀåµÇ´Â º¯¼ö µÑ Áß¿¡ Çϳª¸¦ Á¤ÀÇÇÒ ¼ö ÀÖ´Ù. À§¿¡¼ º¸¿©Áø ¿¹Á¦µéÀº Àç±ÍÀûÀ¸·Î-È®ÀåµÇ´Â º¯¼ö¸¦ ¸¸µç °ÍÀÌ´Ù; ´Ü¼øÇÏ°Ô-È®ÀåµÇ´Â º¯¼ö¸¦ ¸¸µé±â À§Çؼ `=' ´ë½Å `:='¸¦ ¾´´Ù. ±×·¯³ª º¯¼ö ÂüÁ¶³ª ÇÔ¼ö È£ÃâÀ» ÁöÁ¤ÇÑ value¾È¿¡ Æ÷ÇÔÇÏ°íÀÚ ÇÏÁö ¾Ê´Â´Ù¸é ¾î¶² Á¾·ùÀÇ º¯¼ö¸¦ »ý¼ºÇÏµç ¶È°°´Ù.
makefileÀÌ ¿À¹ö¶óÀ̵åÇÑ º¯¼ö¸¦ º¯°æÇÒ ¼ö ÀÖ´Â ±æÀº Çϳª ÀÖ´Ù. ÀÌ°ÍÀº
override
Áö½Ã¾î¸¦ »ç¿ëÇÏ´Â °ÍÀÌ´Ù. ÀÌ°ÍÀº ´ÙÀ½°ú °°ÀÌ º¸ÀÌ´Â
¶óÀÎÀÌ´Ù: `override variable = value'
(see section override
Áö½Ã¾î).
ÀϹÝÀûÀ¸·Î ½© ¸í·ÉÀ» ½ÇÇàÇÒ ¶§ ¿¡·¯°¡ ¹ß»ýÇϸé make
´Â Áï°¢
Æ÷±âÇÏ°í ¿µÀÌ ¾Æ´Ñ »óÅ°ªÀ» ¸®ÅÏÇÑ´Ù. ´õÀÌ»ó ¾î¶² Ÿ°ÙÀÇ ¸í·Éµéµµ
½ÇÇàµÇÁö ¾Ê´Â´Ù. ¿¡·¯°¡ ¹ß»ýÇß´Ù´Â °ÍÀº goalÀÌ Á¤È®ÇÏ°Ô ´Ù½Ã ºôµåµÉ ¼ö
¾ø´Ù´Â °ÍÀ» ¾ê±âÇÏ´Â °ÍÀ̱⠶§¹®¿¡ make
´Â ÀÌ°ÍÀ» ¾Æ´Â Áï½Ã
º¸°íÇÑ´Ù.
¹æ±Ý ¼öÁ¤ÇÑ ¾î¶² ÇÁ·Î±×·¥À» ÄÄÆÄÀÏÇÒ ¶§ ÀÌ°ÍÀº ¿©·¯ºÐÀÌ ¿øÇÏ´Â °ÍÀÌ ¾Æ´Ò
¼ö ÀÖ´Ù. ´ë½Å¿¡ make
°¡ ¾ó¸¶³ª ¸¹Àº ÄÄÆÄÀÏ ¿¡·¯°¡ ³ª¿À´ÂÁö
È®ÀÎÇϱâ À§Çؼ, ½ÃµµµÉ ¼ö ÀÖ´Â ¸ðµç ÆÄÀÏÀ» ÄÄÆÄÀÏÇÏ·Á°í ÇÏ´Â °ÍÀ» ¹Ù¶ö
°ÍÀÌ´Ù.
ÀÌ·± °æ¿ì `-k' ³ª `--keep-going' Ç÷¡±×¸¦ »ç¿ëÇؾß
ÇÑ´Ù. ÀÌ°ÍÀº make
°¡ °è·ùÁßÀΠŸ°ÙÀÇ ´Ù¸¥ Á¾¼Ó¹°µéÀ» °è¼Ó
»ý°¢Çϵµ·Ï Çؼ ±×µéÀÌ ÇÊ¿äÇÏ´Ù¸é, Æ÷±âÇÏ°í 0ÀÌ ¾Æ´Ñ »óÅ°ªÀ» ¸®ÅÏÇϱâ
Àü¿¡, ´Ù½Ã ¸¸µç´Ù. ¿¹¸¦ µé¾î¼ ÇϳªÀÇ ¿ÀºêÁ§Æ® ÆÄÀÏÀ» ÄÄÆÄÀÏÇϸé¼
¿¡·¯°¡ ³ª¿Â ÈÄ, `make -k'´Â ±×°ÍµéÀ» ¸µÅ©ÇÏ´Â °ÍÀÌ ºÒ°¡´ÉÇÏ´Ù´Â
°ÍÀ» ¾Ë´õ¶óµµ ´Ù¸¥ ¿ÀºêÁ§Æ® ÆÄÀϵéÀ» °è¼Ó ÄÄÆÄÀÏÇÒ °ÍÀÌ´Ù. ½© ¸í·ÉµéÀÌ
½ÇÆÐÇÑ ÈÄ °è¼ÓÇÒ »Ó¸¸ÀÌ ¾Æ´Ï°í, `make -k'´Â Ÿ°ÙÀ̳ª Á¾¼Ó ÆÄÀϵéÀ»
¸¸µå´Â ¹æ¹ýÀ» ¸ð¸¥´Ù´Â »ç½ÇÀ» ¹ß°ßÇÑ ÈÄ¿¡µµ °¡´ÉÇÑ ÇÑ °è¼ÓÇÑ´Ù. ÀÌ°ÍÀº
Ç×»ó ¿¡·¯ ¸Þ½ÃÁö¸¦ À¯¹ßÇÏÁö¸¸ `-k'°¡ ¾ø¾ú´Ù¸é ÀÌ°ÍÀº Ä¡¸íÀûÀÎ
¿¡·¯ÀÏ °ÍÀÌ´Ù (see section ¿É¼ÇµéÀÇ ¿ä¾à(Summary of Options)).
make
ÀÇ ÀϹÝÀûÀÎ ÇൿÀº ¿©·¯ºÐÀÇ ¸ñÀûÀÌ goalµéÀÌ °»½ÅµÇµµ·Ï ÇÏ´Â
°ÍÀ̶ó°í °¡Á¤ÇÑ´Ù; ÀÏ´Ü make
°¡ ÀÌ°ÍÀÌ ºÒ°¡´ÉÇÑ °ÍÀ» ¾Ë¸é ±×
½ÇÆи¦ Áï°¢ º¸°íÇÒ °ÍÀÌ´Ù. `-k' Ç÷¡±×´Â ½ÇÁ¦ ¸ñÀûÀÌ ÇÁ·Î±×·¥¿¡¼
º¯°æµÈ ºÎºÐµéÀ» °¡´ÉÇÑ ÇÑ ¸¹ÀÌ Å×½ºÆ®ÇÏ´Â °ÍÀ̶ó´Â °ÍÀ» ¸»ÇÏ´Â
°ÍÀÌ´Ù. ¾Æ¸¶µµ ¸î°¡Áö µ¶¸³ÀûÀÎ ¹®Á¦µéÀ» ã¾Æ¼ ±×°ÍµéÀ» ´ÙÀ½ ÄÄÆÄÀÏ
½ÃµµÇϱâ Àü±îÁö, ±³Á¤ÇÒ ¼ö ÀÖ±â À§Çؼ ¸»ÀÌ´Ù. ÀÌ°ÍÀº ¿Ö À̸ƽºÀÇ
M-x compile ¸í·ÉÀÌ µðÆúÆ®·Î `-k' Ç÷¡±×¸¦ Àü´ÞÇϴ°¡¿¡ ´ëÇÑ
ÀÌÀ¯ÀÌ´Ù.
´ÙÀ½Àº make
°¡ ÀÌÇØÇÏ´Â ¸ðµç ¿É¼ÇµéÀÇ Å×À̺íÀÌ´Ù:
make
¿ÍÀÇ È£È¯¼ºÀ» À§Çؼ ¹«½ÃµÈ´Ù.
make
ÀÇ
Àç±ÍÀûÀΠȣÃâ¿¡¼ ÀüÇüÀûÀ¸·Î »ç¿ëµÈ´Ù.
(see section make
ÀÇ Àç±ÍÀû »ç¿ë(Recursive Use of make
)).
make
°¡ ÇÒ
°ÍÀ» ¾î¶»°Ô °áÁ¤ÇÒ °ÍÀΰ¡¿¡ ´ëÇÑ ¸ðµç°Í.
make
°¡ ÀÌÇØÇÏ´Â ¿É¼ÇµéÀ» º¸¿©ÁÖ°í Á¾·áÇÑ´Ù.
make
´Â °¡´ÉÇÑ ÇÑ ¸¹Àº ÀÛ¾÷µéÀ» ½ÇÇàÇÑ´Ù. Çϳª ÀÌ»óÀÇ
`-j'¿É¼ÇÀÌ ÀÖÀ¸¸é ¸¶Áö¸· °ÍÀÌ »ç¿ëµÈ´Ù.
¸í·ÉµéÀÌ ¾î¶»°Ô ½ÇÇàµÇ´Â°¡¿¡ ´ëÇÑ ´õ ¸¹Àº Á¤º¸¿¡ ´ëÇؼ´Â,
See section Æз¯·² ½ÇÇà(Parallel Execution).
ÀÌ ¿É¼ÇÀº MS-DOS¿¡¼ ¹«½ÃµÈ´Ù´Â °Í¿¡ ÁÖÀÇÇÏÀÚ.
.SUFFIXES
¿¡ ´ëÇÑ ±ÔÄ¢À¸·Î ÀڽŸ¸ÀÇ Á¢¹Ì»çµéÀ»
Á¤ÀÇÇÒ ¼ö ÀÖ°í, ÀڽŸ¸ÀÇ Á¢¹Ì»ç ±ÔÄ¢µéÀ» Á¤ÀÇÇÒ ¼ö ÀÖ´Ù. ´ÜÁö
±ÔÄ¢µé¸¸ÀÌ -r
¿É¼Ç¿¡ ÀÇÇؼ ¿µÇâÀ» ¹Þ´Â´Ù; µðÆúÆ® º¯¼öµéÀº
±×´ë·Î È¿·ÂÀÌ ÀÖ´Ù (see section ¹¬½ÃÀû ±ÔÄ¢¿¡ ÀÇÇØ »ç¿ëµÇ´Â º¯¼ö(Variables Used by Implicit Rules)).
make
·ÎºÎÅÍ
MAKEFLAGS
¸¦ ÅëÇؼ `-k'°¡ ½Â°èµÈ Àç±ÍÀûÀÎ make
¿Ü¿¡´Â Àý´ë ÇÊ¿ä°¡ ¾ø´Ù (see section make
ÀÇ Àç±ÍÀû »ç¿ë(Recursive Use of make
)). ¾Æ´Ï¸é ȯ°æÀÇ MAKEFLAGS
¿¡´Ù `-k'¸¦
¼³Á¤ÇÏ¿´À» ¶§.
make
ÀÇ ÃßÈÄ ½ÇÇàÀ» ¼ÓÀ̱â À§Çؼ ±× ¸í·ÉÀÌ ½ÇÇàµÈ °Íó·³
¸¸µç´Ù. See section ¸í·É ½ÇÇà ´ë½Å¿¡...(Instead of Executing the Commands).
make
ÇÁ·Î±×·¥ÀÇ ¹öÀü°ú ÀúÀÛ±Ç, °³¹ßÀÚ ¸®½ºÆ®, ±×¸®°í ¾î¶²
º¸Áõµµ ¾ø´Ù´Â ¾Æ¸²À» º¸¿©ÁÖ°í Á¾·áÇÑ´Ù.
make
¸í·Éµé·Î ºÎÅÍ
¿¡·¯¸¦ ÃßÀûÇÏ´Â µ¥ À¯¿ëÇÒ ¼ö ÀÖ´Ù. See section make
ÀÇ Àç±ÍÀû »ç¿ë(Recursive Use of make
) (½ÇÁ¦·Î ¿©·¯ºÐÀº `make'°¡ ÀÌ°ÍÀ» Çϱ⠶§¹®¿¡ ÀϺη¯
ÁöÁ¤ÇÒ ÇÊ¿ä´Â °ÅÀÇ ¾ø´Ù; section `--print-directory' ¿É¼Ç ÂüÁ¶.)
-w
ÇÏ¿¡¼ ÀÛ¾÷ µð·ºÅ丮¸¦ Ãâ·ÂÇÏ´Â °ÍÀ» ±ÝÁöÇÔ. ÀÌ ¿É¼ÇÀº
-w
°¡ ÀÚµ¿À¸·Î ÄÑÁú ¶§ À¯¿ëÇÏÁö¸¸ ¿©ºÐÀÇ ¸Þ½ÃÁöµéÀ» º¸°í ½ÍÁö
¾ÊÀ» °ÍÀÌ´Ù. See section `--print-directory' ¿É¼Ç.
make
¸¦ ½ÇÇàÇϱâ Àü¿¡
ÁÖ¾îÁø ÆÄÀÏ¿¡ ´ëÇؼ touch
¸í·ÉÀ» ½ÇÇàÇÏ´Â °Í°ú °ÅÀÇ
À¯»çÇÏ´Ù. ´Ü º¯°æ ½Ã°£ÀÌ make
ÀÇ »ó»ó·Â ¾È¿¡¼¸¸ º¯°æµÈ´Ù´Â °Í¸¸
»©°í ¸»ÀÌ´Ù.
See section ¸í·É ½ÇÇà ´ë½Å¿¡...(Instead of Executing the Commands).
make
°¡ Á¤ÀǵÇÁö ¾ÊÀº º¯¼ö¿¡ ´ëÇÑ ÂüÁ¶¸¦ º¼ ¶§¸¶´Ù °æ°í ¸Þ½ÃÁö¸¦
¹ßÇàÇÑ´Ù. ÀÌ°ÍÀº º¯¼öµéÀ» º¹ÀâÇÏ°Ô »ç¿ëÇÏ´Â makefileÀ» µð¹ö±×ÇÏ·Á°í ÇÒ
¶§ À¯¿ëÇÒ ¼ö ÀÖ´Ù.
Go to the first, previous, next, last section, table of contents.