make
¿¡°Ô makefileÀ̶ó°í ºÒ¸®´Â µ¥ÀÌÅͺ£À̽º¸¦ Àоî¼
±×°ÍÀ¸·ÎºÎÅÍ
½Ã½ºÅÛÀ» ÀçÄÄÆÄÀÏ ÇÏ´Â ¹æ¹ýÀ» °¡¸£ÄÑ ÁÖ´Â Á¤º¸.
makefileµéÀº ´Ù¼¸ °¡Áö Á¾·ùÀÇ °ÍµéÀ» ´ã°í ÀÖ´Ù: explicit rules, implicit rules, variable definitions, directives, ±×¸®°í comments. ±ÔÄ¢, º¯¼ö, ±×¸®°í Áö½ÃÀÚ µîÀº ÀÌ ÈÄ Àåµé¿¡¼ ¼³¸íµÉ °ÍÀÌ´Ù.
objects
¶ó´Â º¯¼ö Á¤ÀǸ¦ º¸¿©ÁØ´Ù (see section MakefileÀ» Á» ´õ ½±°Ô ¸¸µå´Â º¯¼öµé(Variables Make Makefiles Simpler)).
make
°¡ makefileÀ» ÀÐÀ¸¸é¼ Ưº°ÇÑ ¾î¶² °ÍÀ»
Çϵµ·Ï
ÇÏ´Â ¸í·ÉÀÌ´Ù. À̵éÀº ´ÙÀ½°ú °°Àº °ÍµéÀ» Æ÷ÇÔÇÑ´Ù:
define
Áö½Ã¾î³ª ±×¸®°í ¾Æ¸¶µµ ¸í·Éµé ¾È¿¡¼´Â ¿¹¿ÜÀÌ´Ù(½©ÀÌ
ÁÖ¼®À̶ó°í ÆÇ´ÜÇÏ´Â °÷). ÁÖ¼®¸¸À» °®°í ÀÖ´Â(¾Æ¸¶ ±× ¾Õ¿¡
°ø¹éµé ¸î°³ ÀÖ´Â) ¶óÀÎÀº ºí·©Å©ÀÌ°í ¹«½ÃµÈ´Ù.
make
°¡ makefileÀ» ãÀ» ¶§, ÀÌ°ÍÀº µðÆúÆ®·Î ´ÙÀ½°ú °°Àº À̸§µéÀ»
¼ø¼´ë·Î ãÀ¸·Á°í ÇÑ´Ù: `GNUmakefile', `makefile' ±×¸®°í
`Makefile'.
ÀϹÝÀûÀ¸·Î ¿©·¯ºÐÀº ¿©·¯ºÐÀÇ makefileÀ» `makefile'À̳ª
`Makefile'·Î
ºÒ·¯¾ß ÇÒ °ÍÀÌ´Ù. (¿ì¸®´Â `Makefile'À» ±ÇÇÑ´Ù. ¿Ö³Ä¸é ±×°ÍÀÌ
µð·ºÅ丮 ¸®½ºÆÃÀÇ Ã³À½ ±Ùó¿¡, ´Ù¸¥ `README'¿Í °°Àº Áß¿äÇÑ
ÆÄÀϵé
¹Ù·Î ±Ùó¿¡, ¿ì¶Ò ¼Ú¾Æ º¸À̱⠶§¹®ÀÌ´Ù.) ¸ÇóÀ½ °Ë»çµÇ´Â ÆÄÀÏ
`GNUmakefile'Àº ´ëºÎºÐÀÇ makefileµé¿¡ ´ëÇؼ ÃßõµÇÁö ¾Ê´Â °ÍÀÌ´Ù.
¿©·¯ºÐÀº ÀÌ À̸§À» GNU
make
¿¡ Á¾¼ÓÀûÀÎ makefile¿¡ ´ëÇؼ¸¸
»ç¿ëÇϱ⠹ٶõ´Ù. ±×¸®°í ÀÌ À̸§Àº ´Ù¸¥ make
¿¡ ÀÇÇؼ ÀÌÇصÇÁö
¾ÊÀ» °ÍÀÌ´Ù. ´Ù¸¥ make
ÇÁ·Î±×·¥µéÀº
`makefile'°ú `Makefile' À» ãÁö¸¸ `GNUmakefile'Àº ãÁö
¾Ê´Â´Ù.
make
°¡ ÀÌ·± À̸§µé Áß¿¡ ¾î¶² °Íµµ ãÁö ¸øÇÏ¸é ¾î¶² makefileµµ
»ç¿ëÇÏÁö ¾Ê´Â´Ù. ÀÌ·± °æ¿ì ¿©·¯ºÐÀº ¸í·É ¸Å°³º¯¼ö·Î ¾î¶² goalÀ»
¹Ýµå½Ã ÁöÁ¤ÇØ¾ß ÇÏ°í ±×·¯¸é make
´Â ±×°ÍÀ» ´ÜÁö ³»ÀåµÈ ¹¬ÁöÀû
±ÔÄ¢µé¸¸À» »ç¿ëÇÏ¿©¼ ¸®¸ÞÀÌÅ©ÇÏ´Â ¹æ¹ýÀ» ã¾Æ³¾ °ÍÀÌ´Ù.See section ¹¬½ÃÀû ±ÔÄ¢(Using Implicit Rules).
¿©·¯ºÐÀÌ makefile¿¡ ´ëÇؼ ºñÇ¥ÁØ À̸§À» »ç¿ëÇÏ°íÀÚ ÇÑ´Ù¸é
makefile À̸§À» `-f' ³ª `--file'¿É¼ÇÀ» »ç¿ëÇؼ ÁöÁ¤ÇÒ ¼ö
ÀÖ´Ù.
¸Å°³ º¯¼öµé `-f name'³ª `--file=name' Àº
make
¿¡°Ô makefile·Î½á nameÀ̶ó´Â ÆÄÀÏÀ» Àеµ·Ï ÇÑ´Ù. Çϳª
ÀÌ»óÀÇ `-f name'³ª `--file=name'¿É¼ÇÀ»
»ç¿ëÇϸé
¿©·¯°¡Áö makefileµéÀ» ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù. ¸ðµç makefileµéÀÌ ÁöÁ¤µÈ
¼ø¼´ë·Î ¿¬°áµÈ´Ù. µðÆúÆ® makefile À̸§µé,
`GNUmakefile',`makefile' ±×¸®°í `Makefile'´Â ¿©·¯ºÐÀÌ
`-f name'³ª `--file=name'À» ÁöÁ¤Çϸé
ÀÚµ¿À¸·Î üũµÇÁö ¾Ê´Â´Ù.
include
Áö½Ã¾î´Â make
°¡ ÇöÀç makefileÀ» Àд °ÍÀ» Àá½Ã
Áß´ÜÇÏ°í
°è¼ÓÇϱâ Àü¿¡ Çϳª ÀÌ»óÀÇ ´Ù¸¥ makefileµéÀ» Àеµ·Ï ÇÑ´Ù.
ÀÌ Áö½Ã¾î´Â ´ÙÀ½°ú °°ÀÌ º¸ÀÌ´Â makefielÀÇ ÇÑ ¶óÀÎÀÌ´Ù:
include filenames...
filenames can contain shell file name patterns.
±× ¶óÀÎÀÇ ¿©ºÐÀÇ °ø¹éµéÀº Çã¿ëµÇ°í ¹«½ÃµÇÁö¸¸, ÅÇÀº Çã¿ëµÇÁö ¾Ê´Â´Ù.
(ÅÇÀ¸·Î ±× ¶óÀÎÀÌ ½ÃÀÛÇϸé ÀÌ°ÍÀº ¸í·É ¶óÀÎÀ¸·Î »ý°¢µÉ °ÍÀÌ´Ù.)
include
¿Í ÆÄÀÏ À̸§µé »çÀÌ¿¡ ±×¸®°í ÆÄÀÏ °¢°¢ÀÇ À̸§µé »çÀÌ¿¡
°ø¹éÀÌ ÇÊ¿äÇÏ´Ù. `#'·Î ½ÃÀÛÇÏ´Â ÁÖ¼®ÀÌ ¶óÀÎÀÇ ¸¶Áö¸·¿¡ ¾²¿©µµ
µÈ´Ù. ÆÄÀÏ À̸§µéÀÌ º¯¼ö³ª ÇÔ¼ö ·¹ÆÛ·±½º¸¦ ´ã°í ÀÖ´Ù¸é
±×µéÀº È®ÀåµÈ´Ù.See section º¯¼ö »ç¿ë ¹æ¹ý(How to Use Variables).
¿¹¸¦ µé¾î¼ ¿©·¯ºÐÀÌ ¼¼ °³ÀÇ `.mk' ÆÄÀϵé, `a.mk',
`b.mk', ±×¸®°í `c.mk'¸¦ °¡Áö°í ÀÖ°í, $(bar)
°¡
bish bash
·Î È®ÀåµÈ´Ù¸é
´ÙÀ½ Ç¥ÇöÀº
include foo *.mk $(bar)
´ÙÀ½ÀÇ °Í°ú µ¿ÀÏÇÏ´Ù.
include foo a.mk b.mk c.mk bish bash
make
°¡ include
Áö½Ã¾î¸¦ ó¸®ÇÏ°í ÀÖÀ» ¶§, ±×°ÍÀº
makefileÀ» ´ã°í ÀÖ´Â °ÍÀ» Àд °ÍÀ» Àá½Ã ÁßÁöÇÏ°í ¸®½ºÆ®µÈ ÆÄÀϵéÀ»
¼ø¼´ë·Î Àд´Ù. ÀÌ°ÍÀÌ ³¡³ª¸é make
´Â Áö½Ã¾î°¡ ÀÖ¾ú´ø makefileÀ»
´Ù½Ã Àд´Ù.
¿©·¯°¡Áö µð·ºÅ丮µé¿¡ ÀÖ´Â °³°³ÀÇ makefileµé¿¡ ÀÇÇؼ 󸮵ǴÂ
´Ù¼öÀÇ ÇÁ·Î±×·¥µéÀÌ º¯¼ö Á¤Àǵé(see section º¯¼ö ¼³Á¤(Setting Variables))À̳ª
ÆÐÅÏ ±ÔÄ¢µé(see section ÆÐÅÏ ±ÔÄ¢À» Á¤ÀÇÇÏ°í ÀçÁ¤Çϱâ(Defining and Redefining Pattern Rules))ÀÇ °øÅë ÁýÇÕÀ» ÇÊ¿ä·Î ÇÒ ¶§°¡, include
Áö½Ã¾îµéÀ» »ç¿ëÇÏ´Â
ÇÑ°¡Áö
°æ¿ìÀÌ´Ù.
¼Ò½º ÆÄÀϵé·ÎºÎÅÍ dependencies¸¦ ÀÚµ¿À¸·Î »ý¼ºÇÏ°íÀÚ ÇÒ ¶§°¡
´Ù¸¥ ±×·¯ÇÑ °æ¿ìÀÌ´Ù; dependencies´Â ÁÖ(ñ«) makefile¿¡ ÀÇÇؼ
»ðÀԵǴ ÆÄÀÏ¿¡ ³õ¿©Áú ¼ö ÀÖ´Ù. ´Ù¸¥ ¹öÀüÀÇ make
¿Í °°ÀÌ
ÀüÅëÀûÀ¸·Î ÇàÇØÁø °Íó·³ ÁÖ makefileÀÇ ¸¶Áö¸·¿¡´Ù dependencies¸¦
Ãß°¡ÇÏ´Â °Íº¸´Ù, Àú·¸°Ô ÇÏ´Â °ÍÀÌ ÈξÀ ´õ ºÐ¸íÇÏ´Ù.
See section Á¾¼Ó¹°µéÀ» ÀÚµ¿À¸·Î »ý¼ºÇϱâ(Generating Dependencies Automatically).
ÁöÁ¤µÈ À̸§ÀÌ slash·Î ½ÃÀÛÇÏÁö ¾Ê°í ±× ÆÄÀÏÀÌ ÇöÀç µð·ºÅ丮¿¡ ¾øÀ¸¸é ´Ù¸¥ ¿©·¯ µð·ºÅ丮µéÀÌ °Ë»öµÈ´Ù. ¸ÕÀú, `-I' ¶Ç´Â `--include-dir' ¿É¼ÇÀ¸·Î ÁöÁ¤ÇÑ ÀÓÀÇÀÇ µð·ºÅ丮µéÀÌ °Ë»öµÈ´Ù (see section ¿É¼ÇµéÀÇ ¿ä¾à(Summary of Options)). ±×¸®°í ³ª¼ ´ÙÀ½°ú °°Àº µð·ºÅ丮µéÀÌ ÀÌ ¼ø¼·Î (Á¸ÀçÇÑ´Ù¸é) °Ë»öµÈ´Ù: `prefix/include' (ÀϹÝÀûÀ¸·Î `/usr/local/include' (1)) `/usr/gnu/include', `/usr/local/include', `/usr/include'.
»ðÀÔµÈ makefileÀÌ ÀÌ·± µð·ºÅ丮µéÁßÀÇ ¾î´À °÷¿¡µµ ã¾ÆÁú ¼ö ¾ø´Ù¸é
°æ°í ¸Þ½ÃÁö°¡ ³ªÅ¸³ªÁö¸¸ ÀÌ°ÍÀº Áï°¢ Ä¡¸íÀûÀÎ ¿¡·¯°¡ ¾Æ´Ï´Ù;
include
¸¦ Æ÷ÇÔÇÏ´Â makefileÀÇ Ã³¸®°¡ °è¼ÓµÈ´Ù.
ÀÏ´Ü makefileµéÀ» Àд °ÍÀÌ ³¡³ª¸é `make'´Â °»½ÅµÇ¾î¾ß ÇÏ´Â °ÍÀ̳ª
Á¸ÀçÇÏÁö ¾Ê´Â °ÍÀ» ¸®¸ÞÀÌÅ©ÇÏ·Á°í ³ë·Â ÇÒ °ÍÀÌ´Ù.See section Makefiles°¡ ´Ù½Ã ¸¸µé¾îÁö´Â °úÁ¤(How Makefiles Are Remade). makefileÀ» ¸®¸ÞÀÌÅ©ÇÏ´Â
¹æ¹ýÀ» ãÀ¸·Á°í ³ë·ÂÇÑ ÈÄ¿¡ ±×°ÍÀÌ ½ÇÆÐÇÑ
°æ¿ì¿¡¸¸ make
´Â makefileÀÌ ¾ø´Â °ÍÀÌ Ä¡¸íÀûÀÎ ¿¡·¯¶ó°í Áø´ÜÇÒ
°ÍÀÌ´Ù.
make
°¡ Á¸ÀçÇÏÁö ¾Ê°í ´Ù½Ã ¸¸µé¾îÁú ¼ö ¾ø´Â makefileÀ»
¿¡·¯ ¸Þ½ÃÁö ¾øÀÌ ¹«½ÃÇϵµ·Ï ÇÏ°íÀÚ ÇÑ´Ù¸é -include
Áö½Ã¾î¸¦
´ÙÀ½°ú °°ÀÌ include
´ë½Å »ç¿ëÇ϶ó:
-include filenames...
ÀÌ°ÍÀº filenames¿¡ ÀÖ´Â ¾î¶² °ÍÀÌ Á¸ÀçÇÏÁö ¾Ê´õ¶óµµ ¿¡·¯°¡ ¾ø´Ù´Â
°Í(°æ°íÁ¶Â÷µµ ¾ø´Ù)À» Á¦¿ÜÇÏ°í´Â ¸ðµç ¸é¿¡¼ include
¿Í µ¿ÀÏÇÏ°Ô
ÀÛµ¿ÇÑ´Ù. ´Ù¸¥ ¾î¶² make
±¸Çö¹°µé°ú ȣȯ¼ºÀ» À§Çؼ
-include
'¿¡ ´ëÇÑ ´Ù¸¥ À̸§ sinclude
ÀÌ Á¦°øµÈ´Ù.
MAKEFILES
º¯¼ö(The Variable MAKEFILES
)
MAKEFILES
ȯ°æº¯¼ö ÀÌ Á¤ÀǵǾî ÀÖ´Ù¸é,´Â ±×°ÍÀÇ °ªÀ», ´Ù¸¥ °Íµé
ÀÌÀü¿¡ Àоî¾ß ÇÏ´Â Ãß°¡ÀÇ makefile À̸§µé(°ø¹é ¹®ÀÚ·Î ºÐ¸®µÈ) ¸®½ºÆ®·Î½á
»ý°¢ÇÑ´Ù. ÀÌ°ÍÀº include
¿Í ¾ÆÁÖ ºñ½ÁÇÏ°Ô ÀÛµ¿ÇÑ´Ù: ¿©·¯
µð·ºÅ丮µéÀÌ ±×·±
ÆÄÀϵ鿡 ´ëÇؼ °Ë»öµÈ´Ù(see section ´Ù¸¥ makefile »ðÀÔ(Including Other Makefiles))
³ª¾Æ°¡ µðÆúÆ® ¸ñÇ¥´Â ÀÌ·± makefileµé ÁßÀÇ Çϳª·ÎºÎÅÍ Àý´ë ¾ò¾îÁöÁö
¾ÊÀ¸¸ç MAKEFILES
¿¡ ¸®½ºÆ®µÈ ÆÄÀϵéÀÌ ¾ø¾îµµ ¿¡·¯°¡ ¾Æ´Ï´Ù.
If the environment variable MAKEFILES
is defined,
make
MAKEFILES
Àº `make'ÀÇ Àç±ÍÀûÀΠȣÃâ »çÀÌÀÇ Åë½Å¿¡¼ ÁÖ·Î
»ç¿ëµÈ´Ù(see section make
ÀÇ Àç±ÍÀû »ç¿ë(Recursive Use of make
)). make
ÀÇ Åé-·¹º§ È£Ãâ ÀÌÀü¿¡ ÀÌ È¯°æº¯¼ö¸¦
¼³Á¤ÇÏ´Â °ÍÀº ÀϹÝÀûÀ¸·Î
±ÇÀåµÇÁö ¾Ê´Â °ÍÀÌ´Ù. ¿Ö³Ä¸é ¹Ù±ùÀ¸·ÎºÎÅÍ makefileÀ» È¥ÇÕÇÏÁö ¾Ê´Â
°ÍÀÌ ÀϹÝÀûÀ¸·Î ´õ ÁÁ±â ¶§¹®ÀÌ´Ù. ±×·¯³ª make
¸¦ ƯÁ¤ makefile
¾øÀÌ ½ÇÇàÇÒ ¶§, MAKEFILES
¿¡ ÀÖ´Â makefileÀº °Ë»ö Æнº¸¦
Á¤ÀÇÇÏ´Â °Í°ú °°Àº(see section Á¾¼Ó¹°À» À§ÇÑ µð·ºÅ丮 °Ë»ö(Searching Directories for Dependencies))Á» ´õ Àß ÀÛµ¿ÇÏ´Â
³»Àå ¾Ï½Ã ±ÔÄ¢µéÀ» µ½´Â À¯¿ëÇÑ ÀÏÀ» ÇÒ ¼ö ÀÖ´Ù.
¾î¶² »ç¿ëÀÚµéÀº ·Î±×ÀÎÇÒ ¶§ ÀÚµ¿À¸·Î ȯ°æº¯¼ö ¾È¿¡´Ù MAKEFILES
¸¦
¼³Á¤ÇÏ¿© ÇÁ·Î±×·¥ makefileµéÀÌ ÀÌ·¸°Ô µÇ´Â °ÍÀ» ±â´ëÇϵµ·Ï ÇÏ´Â
À¯È¤À» ¹Þ´Â´Ù. ÀÌ°ÍÀº ¾ÆÁÖ ³ª»Û »ý°¢ÀÌ´Ù. ¿Ö³Ä¸é ±×·± makefileµéÀº
´Ù¸¥ »ç¶÷¿¡ ÀÇÇؼ ½ÇÇàµÈ´Ù¸é ½ÇÆÐÇÒ °ÍÀ̱⠶§¹®ÀÌ´Ù. ¸í½ÃÀûÀÎ
include
µð·ºÆ¼ºê¸¦ makefile ¾È¿¡´Ù ¾²´Â °ÍÀÌ ÈξÀ ´õ ÁÁ´Ù.
See section ´Ù¸¥ makefile »ðÀÔ(Including Other Makefiles).
¾î¶² °æ¿ì makefileÀº RCS³ª SCCS ÆÄÀϵé°ú °°Àº ´Ù¸¥ ÆÄÀϵ鿡 ÀÇÇؼ
´Ù½Ã ¸¸µé¾îÁú¼ö ÀÖ´Ù. makefileÀº ´Ù¸¥ ÆÄÀϷκÎÅÍ ´Ù½Ã ¸¸µé¾îÁú ¼ö
ÀÖ´Ù¸é ¿©·¯ºÐÀº ¾Æ¸¶µµ make
°¡, Àаí ÀÖ´Â makefileÀÇ ÃÖ±Ù ¹öÀüÀ»
ȹµæÇϱ⸦ ¿øÇÒ °ÍÀÌ´Ù.
ÀÌ ¶§¹®¿¡
¸ðµç makefileµéÀ» ÀÐÀº ÈÄ¿¡ make
´Â °¢°¢ÀÇ °ÍÀ» ¸ñÇ¥ Ÿ°ÙÀ¸·Î
»ý°¢ÇÒ °ÍÀÌ°í ±×°ÍÀ» ¾÷µ¥ÀÌÆ®ÇÏ·Á°í ½ÃµµÇÒ °ÍÀÌ´Ù. makefileÀÌ
±×°Í(¹Ù·Î ±× makefile ¾È¿¡¼ ¾Æ´Ï¸é ´Ù¸¥ °Í¿¡¼ ã¾ÆÁö´Â)À»
¾÷µ¥ÀÌÆ®ÇÏ´Â ¹æ¹ýÀ» ¸»ÇÏ´Â ±ÔÄ¢À» °¡Áö°í Àְųª ¶Ç´Â ¹¬½Ã ±ÔÄ¢ÀÌ
±×°Í¿¡ Àû¿ëµÇ´Â °ÍÀ̶ó¸é(see section ¹¬½ÃÀû ±ÔÄ¢(Using Implicit Rules)), (ÇÊ¿äÇÏ´Ù¸é) ¾÷µ¥ÀÌÆ®µÉ °ÍÀÌ´Ù.
¸ðµç makefileµéÀÌ Ã¼Å©µÈ ÈÄ¿¡ ÀÓÀÇÀÇ °ÍÀÌ ½ÇÁ¦·Î º¯°æµÇ¾ú´Ù¸é
make
´Â ±ú²ýÇÑ »óÅ¿¡¼ ´Ù½Ã ½ÃÀÛÇؼ ¸ðµç makefileµéÀ» ´Ù½Ã
Àд´Ù.
(±×µé °¢°¢À» ´Ù½Ã ¾÷µ¥ÀÌÆ®ÇÏ·Á°í ½ÃµµÇÏ°ÚÁö¸¸ ÀϹÝÀûÀ¸·Î ÀÌ°ÍÀº
±×µéÀ» ´Ù½Ã º¯°æÇÏÁö ¾ÊÀ» °ÍÀÌ´Ù. ¿Ö³Ä¸é ±×µéÀÌ ÀÌ¹Ì ¾÷µ¥ÀÌÆ®µÇ¾ú±â
¶§¹®ÀÌ´Ù.)
makefileµéÀÌ ¸í·ÉµéÀº ÀÖÁö¸¸ Á¾¼Ó¹°µéÀÌ ¾ø´Â, ÆÄÀÏÀ» ¸®¸ÞÀÌÅ©ÇÒ
´õºí-ÄÝ·Ð ±ÔÄ¢À» ÁöÁ¤ÇÏ¿´´Ù¸é ±× ÆÄÀÏÀº Ç×»ó ´Ù½Ã ¸¸µé¾îÁú
°ÍÀÌ´Ù(see section ´õºí-ÄÝ·Ð ±ÔÄ¢(Double-Colon Rules)). makefileÀÇ ÀÌ·± °æ¿ì ¸í·ÉµéÀº ÀÖÁö¸¸
Á¾¼Ó¹°µéÀÌ ¾ø´Â ´õºí-ÄÝ·ÐÀ» °¡Áø makefileÀº make
°¡ ½ÇÇàÇÒ ¶§¸¶´Ù
´Ù½Ã ¸¸µé¾îÁú °ÍÀÌ´Ù. ±×¸®°í make
°¡ ½ÃÀÛÇÏ°í makefileÀ» ´Ù½Ã ÀÐÀº
ÈÄ ¹Ýº¹ÇÒ °ÍÀÌ´Ù. ÀÌ°ÍÀº ±×·¡¼ ¹«ÇÑ ·çÇÁ¸¦ ¹ß»ýÇÑ´Ù: make
´Â Ç×»ó
makefileÀ» ´Ù½Ã ¸¸µé°ÍÀÌ°í ´Ù¸¥ °ÍÀº ÀüÇô ÇÏÁö ¾ÊÀ» °ÍÀÌ´Ù. ±×·¡¼
ÀÌ°ÍÀ» ÇÇÇϱâ À§Çؼ make
´Â Á¾¼Ó¹°ÀÌ ¾ø´Â ´õºí-ÄݷРŸÄϵé·Î
ÁöÁ¤µÈ makefileµéÀ» ´Ù½Ã ¸¸µé·Á°í ÇÏÁö ¾ÊÀ» °ÍÀÌ´Ù.
`-f'³ª `--file'¿É¼ÇµéÀ» »ç¿ëÇؼ ÀÐÀ» makefileÀ» ÁöÁ¤ÇÏÁö
¾Ê¾Ò´Ù¸é make
´Â µðÆúÆ® makefile À̸§µéÀ» ½ÃµµÇÒ °ÍÀÌ´Ù;
see section ¿©·¯ºÐÀÇ Makefile¿¡ ÁÙ À̸§(What Name to Give Your Makefile). `-f'³ª
`--file'¿É¼Çµé·Î
¸í½ÃÀûÀ¸·Î ¿ä±¸µÈ makefileµé°ú´Â ´Þ¸® make
´Â ÀÌ·± makefileµéÀÌ
Á¸ÀçÇÏ´ÂÁö ¸ð¸¥´Ù. ±×·¯³ª µðÆúÆ® makefileÀÌ Á¸ÀçÇÏÁö ¾ÊÁö¸¸
make
±ÔÄ¢µéÀ» ½ÇÇàÇÔÀ¸·Î½á »ý¼ºµÉ ¼ö ÀÖ´Ù¸é ¿©·¯ºÐÀº ¾Æ¸¶µµ ±×
makefileÀÌ
»ç¿ëµÉ ¼ö ÀÖµµ·Ï ½ÇÇàµÉ ±ÔÄ¢µéÀ» ¿øÇÒ °ÍÀÌ´Ù.
±×·¯¹Ç·Î µðÆúÆ® makefileµé Áß ¾î¶² °Íµµ Á¸ÀçÇÏÁö ¾Ê´Â´Ù¸é make
´Â
Çϳª¸¦ ¸¸µé ¶§±îÁö ¶Ç´Â ½ÃµµÇÒ À̸§ÀÌ ¾øÀ» ¶§±îÁö
±×µéÀÌ °Ë»öµÇ´Â µ¿ÀÏÇÑ ¼ø¼·Î ±×µé Áß Çϳª¸¦ ¸¸µé·Á°í ³ë·ÂÇÒ
°ÍÀÌ´Ù(see section ¿©·¯ºÐÀÇ Makefile¿¡ ÁÙ À̸§(What Name to Give Your Makefile))
make
°¡
makefileÀ» ãÀ» ¼ö ¾ø°Å³ª ¸¸µé ¼ö ¾ø´Ù´Â °ÍÀº ¿¡·¯°¡ ¾Æ´ÔÀ»
ÁÖ¸ñÇÏÀÚ;
makefileÀº ¾ðÁ¦³ª ÇÊ¿äÇÑ °ÍÀº ¾Æ´Ï´Ù.
`-t'³ª `--touch'¿É¼ÇÀ» »ç¿ëÇÒ ¶§ (see section ¸í·É ½ÇÇà ´ë½Å¿¡...(Instead of Executing the Commands)),¿©·¯ºÐÀº ¾î¶² ŸÄÏÀ» touchÇÒ °ÍÀΰ¡¸¦ °áÁ¤Çϱâ À§Çؼ ³¯Â¥°¡ Áö³ makefileÀ» »ç¿ëÇϱ⸦ ¿øÄ¡ ¾ÊÀ» °ÍÀÌ´Ù. ±×·¡¼ `-t' ¿É¼ÇÀº makefileµéÀ» ¾÷µ¥ÀÌÆ®ÇÏ´Â È¿°ú°¡ ¾ø´Ù; ±×µéÀº ½ÇÁ¦·Î `-t'°¡ ÁöÁ¤µÇ¾ú´Ù ÇÏ´õ¶óµµ ¾÷µ¥ÀÌÆ®µÈ´Ù. ºñ½ÁÇÏ°Ô, `-q' (¶Ç´Â `--question')°ú `-n' (¶Ç´Â `--just-print') ¿É¼ÇµéÀº makefileµéÀÇ ¾÷µ¥ÀÌÆ®¸¦ ±ÝÁöÇÏÁö ¸øÇÑ´Ù. ¿Ö³Ä¸é out-of-dateÀÎ makefileÀº ´Ù¸¥ Ÿ°Ùµé¿¡ ´ëÇؼ À߸øµÈ °á°ú¸¦ ³¾ °ÍÀ̱⠶§¹®ÀÌ´Ù. ±×·¡¼ `make -f mfile -n foo'¶ó°í Çϸé `mfile'À» ¾÷µ¥ÀÌÆ®ÇÏ°í ±×°ÍÀ» ÀÐÀº ÈÄ ½ÇÇà¾øÀÌ, `foo'¿Í ±×°ÍÀÇ Á¾¼Ó¹°µéÀ» ¾÷µ¥ÀÌÆ®ÇÏ´Â ¸í·ÉµéÀ» µð½ºÇ÷¹ÀÌÇÒ °ÍÀÌ´Ù. `foo'¿¡ ´ëÇؼ µð½ºÇ÷¹ÀÌµÈ ¸í·ÉµéÀº `mfile'ÀÇ ¾÷µ¥ÀÌÆ®µÈ ³»¿ë¾È¿¡¼ ÁöÁ¤µÈ °ÍµéÀÌ´Ù.
±×·¯³ª ¶§¶§·Î ¿©·¯ºÐÀº ½ÇÁ¦ makefileµéÀÇ °»½ÅÀ» ±ÝÁöÇÏ°íÀÚ ÇÒ·±Áöµµ ¸ð¸¥´Ù. ¿©·¯ºÐÀº ÀÌ°ÍÀ», makefileµéÀ» ¸í·É¶óÀο¡¼ goal·Î ÁöÁ¤ÇÏ°í µ¿½Ã¿¡ ±×µéÀ» makefileµé·Î ÁöÁ¤Çؼ, ÇÒ ¼ö ÀÖ´Ù. makefile À̸§ÀÌ ¸í½ÃÀûÀ¸·Î goal·Î½á ÁöÁ¤µÉ ¶§ `-t'°ú ±âŸ µîµîÀÌ ±×°Íµé¿¡ Àû¿ëµÈ´Ù.
±×·¡¼ `make -f mfile -n mfile foo'´Â makefileÀÎ `mfile'¸¦ ÀÐ°í¼ ½ÇÁ¦·Î ¸í·ÉµéÀ» ½ÇÇàÇÏÁö ¾Ê°í ÀÌ°ÍÀ» ¾÷µ¥ÀÌÆ®ÇÒ ¸í·ÉµéÀ» µð½ºÇ÷¹ÀÌÇÒ °ÍÀÌ´Ù. ±×¸®°í ³ª¼ `foo'À» ¾÷µ¥ÀÌÆ®ÇÏ´Â µ¥ ÇÊ¿äÇÑ ¸í·ÉµéÀ» ½ÇÁ¦·Î´Â ½ÇÇàÇÏÁö ¾Ê°í µð½ºÇ÷¹ÀÌÇÒ °ÍÀÌ´Ù. `foo'¸¦ À§ÇÑ ¸í·ÉµéÀº `mfile'ÀÇ ÇöÁ¸ÇÏ´Â ³»¿ë¹°¿¡ ÀÇÇؼ ÁöÁ¤µÈ °ÍÀÌ µÉ °ÍÀÌ´Ù.
¶§¶§·Î ´Ù¸¥ makefile°ú °ÅÀÇ ´ëºÎºÐ µ¿ÀÏÇÑ makefileÀ» °¡Áö´Â °ÍÀÌ
À¯¿ëÇÏ´Ù. ¿©·¯ºÐÀº Á¾Á¾ `include' Áö½Ã¾î¸¦ »ç¿ëÇؼ ´Ù¸¥
makefile¾È¿¡´Ù makefileÇϳª¸¦ Æ÷ÇÔ½Ãų ¼ö ÀÖÀ¸¸ç ±×·¡¼ ´õ ¸¹Àº Ÿ°ÙÀ̳ª
º¯¼ö Á¤ÀǸ¦ Æ÷ÇÔÇÒ ¼ö ÀÖ´Ù. ±×·¯³ª µÎ makefileµéÀÌ µ¿ÀÏÇÑ Å¸°Ù¿¡ ´ëÇؼ
´Ù¸¥ ¸í·ÉµéÀ» Á¦°øÇÑ´Ù¸é make
´Â ¿©·¯ºÐÀÌ ÀÌ°ÍÀ» ½ÇÇàÇϵµ·Ï ÇÏÁö
¾ÊÀ» °ÍÀÌ´Ù. ±×·¯³ª ´Ù¸¥ ¹æ¹ýÀÌ ÀÖ´Ù.
´ã°í ÀÖ´Â makefile(´Ù¸¥ °ÍÀ» Æ÷ÇÔÇÏ°íÀÚ ÇÏ´Â °Í)¾È¿¡¼
¿©·¯ºÐÀº ´ã°í ÀÖ´Â makefile¿¡ ÀÖ´Â Á¤º¸·ÎºÎÅÍ ÀÓÀÇÀÇ Å¸°ÙÀ» ´Ù½Ã ¸¸µé±â
À§Çؼ make
´Â ¹Ýµå½Ã ´Ù¸¥ makefileÀ» º¸¾Æ¾ß ÇÑ´Ù´Â °ÍÀ» ¸»ÇÏ´Â
match-anything ÆÐÅÏ ±ÔÄ¢À» »ç¿ëÇÒ ¼ö ÀÖ´Ù. ÆÐÅÏ ±ÔÄ¢¿¡ ´ëÇÑ Á» ´õ ¸¹Àº
Á¤º¸¸¦ ¿øÇÑ´Ù¸é See section ÆÐÅÏ ±ÔÄ¢À» Á¤ÀÇÇÏ°í ÀçÁ¤Çϱâ(Defining and Redefining Pattern Rules)¸¦ ÂüÁ¶.
¿¹¸¦ µé¾î¼ Ÿ°Ù `foo'(±×¸®°í ´Ù¸¥ Ÿ°Ùµé)À» ¸¸µå´Â ¹æ¹ýÀ» ¸»ÇÏ´Â `Makefile'¶ó°í ºÒ¸®´Â makefileÀ» °¡Áö°í ÀÖ´Ù¸é ¿©·¯ºÐÀº ´ÙÀ½°ú °°Àº °ÍÀ» ´ã°í ÀÖ´Â `GNUmakefile'¶ó´Â À̸§ÀÇ makefileÀ» ÀÛ¼ºÇÒ ¼ö ÀÖ´Ù:
foo: frobnicate > foo %: force @$(MAKE) -f Makefile $@ force: ;
`make foo'¶ó°í Çϸé, make
´Â `GNUmakefile'À» ã¾Æ¼
±×°ÍÀ» Àаí, `foo'¸¦ ¸¸µé±â À§Çؼ´Â `frobnicate > foo'¶ó´Â
¸í·ÉÀ» ½ÇÇàÇØ¾ß ÇÑ´Ù´Â °ÍÀ» ¾Ë°Ô µÉ °ÍÀÌ´Ù. `make bar'¶ó°í Çϸé
make
´Â `GNUmakefile'¿¡¼ `bar'¸¦ ¸¸µå´Â ¹æ¹ýÀ» ãÀ» ¼ö
¾øÀ» °ÍÀÌ´Ù. ±×·¡¼ ÆÐÅÏ ±ÔÄ¢À¸·ÎºÎÅÍ Ã£Àº ¸í·ÉµéÀ» »ç¿ëÇÒ °ÍÀÌ´Ù:
`make -f Makefile bar'. `Makefile'ÀÌ `bar'¸¦ ¾÷µ¥ÀÌÆ®ÇÏ´Â
±ÔÄ¢À» Á¦°øÇÑ´Ù¸é make
´Â ±× ±ÔÄ¢À» Àû¿ëÇÒ °ÍÀÌ´Ù. ±×¸®°í ºñ½ÁÇÏ°Ô
`GNUmakefile'°¡ ¾î¶»°Ô ¸¸µé°ÍÀΰ¡¸¦ ¸»ÇÏÁö ¾Ê´Â ´Ù¸¥ Ÿ°Ùµéµµ ÀÌ·±
°ÍÀÌ Àû¿ëµÈ´Ù.
ÀÌ°ÍÀÌ ÀÛµ¿ÇÏ´Â ¹æ¹ýÀº ÆÐÅÏ ±ÔÄ¢ÀÌ `%'¿Í °°Àº ÆÐÅÏÀ» °¡Áö°í ÀÖ¾î¼
ÀÓÀÇÀÇ Å¸°Ù ¾î¶² °ÍÀÌµç ¸ÅÄ¡µÈ´Ù´Â °ÍÀÌ´Ù. ÀÌ ±ÔÄ¢Àº `force'¶ó´Â
Á¾¼Ó¹°À» °¡Áö°í ÀÖµµ·Ï ÁöÁ¤ÇÏ°í ÀÖÀ¸¸ç ÀÌ°ÍÀº Ÿ°Ù ÆÄÀÏÀÌ À̹Ì
Á¸ÀçÇÏ´õ¶óµµ ¸í·ÉµéÀÌ ½ÇÇàµÇµµ·Ï º¸ÀåÇϱâ À§ÇÑ °ÍÀÌ´Ù. ¿ì¸®´Â
make
°¡ `force' Ÿ°ÙÀ» ºôµåÇϱâ À§ÇÑ ¹¬½ÃÀû ±ÔÄ¢À» ãÁö
¸øÇϵµ·Ï ±ÝÁöÇÏ´Â, ºó ¸í·ÉµéÀ» ÁÖ¾ú´Ù---±×·¸°Ô ÇÏÁö ¾ÊÀ¸¸é `force'
Àڽſ¡´Ù µ¿ÀÏÇÑ match-anything ±ÔÄ¢À» Àû¿ëÇؼ Á¾¼Ó¹° ·çÇÁ¸¦ ¸¸µé°ÍÀÌ´Ù.
Go to the first, previous, next, last section, table of contents.