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


Makefiles ÀÛ¼º(Writing Makefiles)

make¿¡°Ô makefileÀ̶ó°í ºÒ¸®´Â µ¥ÀÌÅͺ£À̽º¸¦ Àо ±×°ÍÀ¸·ÎºÎÅÍ ½Ã½ºÅÛÀ» ÀçÄÄÆÄÀÏ ÇÏ´Â ¹æ¹ýÀ» °¡¸£ÄÑ ÁÖ´Â Á¤º¸.

MakefileÀÌ ´ã°í ÀÖ´Â °Í(What Makefiles Contain)

makefileµéÀº ´Ù¼¸ °¡Áö Á¾·ùÀÇ °ÍµéÀ» ´ã°í ÀÖ´Ù: explicit rules, implicit rules, variable definitions, directives, ±×¸®°í comments. ±ÔÄ¢, º¯¼ö, ±×¸®°í Áö½ÃÀÚ µîÀº ÀÌ ÈÄ Àåµé¿¡¼­ ¼³¸íµÉ °ÍÀÌ´Ù.

¿©·¯ºÐÀÇ Makefile¿¡ ÁÙ À̸§(What Name to Give Your Makefile)

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'À» ÁöÁ¤Çϸé ÀÚµ¿À¸·Î üũµÇÁö ¾Ê´Â´Ù.

´Ù¸¥ makefile »ðÀÔ(Including Other Makefiles)

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).

Makefiles°¡ ´Ù½Ã ¸¸µé¾îÁö´Â °úÁ¤(How Makefiles Are Remade)

¾î¶² °æ¿ì 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ÀÇ ÀϺθ¦ ¿À¹ö¶óÀ̵ù(Overriding Part of Another Makefile)

¶§¶§·Î ´Ù¸¥ 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.