make
°¡ ¹«½¼ ÀÏÀ» ÇÒÁö ¾Ë·ÁÁÖ·Á¸é
¸ÞÀÌÅ©ÆÄÀÏ(makefile)À̶ó°í ÇÏ´Â ÆÄÀÏÀÌ ÇÊ¿äÇÏ´Ù. ¸¹Àº
°æ¿ì¿¡, ¸ÞÀÌÅ© ÆÄÀÏÀº make
°¡ ¾î¶»°Ô ÇÁ·Î±×·¥À» ÄÄÆÄÀÏÇÏ°í
¸µÅ©ÇØ¾ß ÇÒ Áö ¾Ë·ÁÁØ´Ù.
ÀÌ Àå¿¡¼´Â, ¿©´ü°³ÀÇ C ¼Ò½º ÆÄÀÏ°ú ¼¼°³ÀÇ Çì´õ ÆÄÀÏ·Î ÀÌ·ç¾îÁø ¹®¼
ÆíÁý±â¸¦ ¾î¶»°Ô ÄÄÆÄÀÏÇÏ°í ¸µÅ©ÇÒ Áö ±â¼úÇØ ³õÀº °£´ÜÇÑ ¸ÞÀÌÅ©ÆÄÀÏ¿¡
´ëÇØ °øºÎÇÒ °ÍÀÌ´Ù. ÀÌ ¸ÞÀÌÅ©ÆÄÀÏÀº ¸í½ÃÀûÀ¸·Î ¿äûµÇ¾úÀ» °æ¿ì,
make
°¡ ¿©·¯°¡Áö Àâ´ÙÇÑ ¸í·É¾îµéÀ» ½ÇÇàÇϵµ·Ï ÇÒ °ÍÀÌ´Ù (¿¹¸¦
µé¾î, »õ·Ó°Ô Áö¿ì´Â ÀÛ¾÷¿¡¼ ÆÄÀϵéÀ» Áö¿ì·Á°í ÇÒ ¶§). º¸´Ù º¹ÀâÇÑ
¸ÞÀÌÅ© ÆÄÀÏÀÇ ¿¹¸¦ º¸°í ½ÍÀ¸¸é section º¹ÀâÇÑ ¸ÞÀÌÅ©ÆÄÀÏ ¿¹Á¦À» º»´Ù.
make
°¡ ÀÌ ÆíÁý±â¸¦ ´Ù½Ã ÄÄÆÄÀÏÇÒ ¶§¸¶´Ù, º¯°æµÈ °¢ C ¼Ò½º ÆÄÀÏÀÌ
´Ù½Ã ÄÄÆÄÀÏµÇ¾ß ÇÑ´Ù. ¸¸¾à Çì´õ ÆÄÀÏÀÌ º¯°æµÉ °æ¿ì, ¾ÈÀüÇÏ°Ô ÇÏ·Á¸é ÀÌ
Çì´õ ÆÄÀÏÀ» Æ÷ÇÔÇÏ´Â C ¼Ò½º ÆÄÀϵµ ´Ù½Ã ÄÄÆÄÀÏµÇ¾ß ÇÑ´Ù. °¢ ÄÄÆÄÀÏ
ÀÛ¾÷Àº ¼Ò½º ÆÄÀÏ¿¡ ÇØ´çÇÏ´Â ¿ÀºêÁ§Æ® ÆÄÀÏÀ» ¸¸µç´Ù. ¸¶Áö¸·À¸·Î, ¸ðµç
¼Ò½º ÆÄÀÏÀÌ ´Ù½Ã ÄÄÆÄÀϵǾúÀ¸¸é, ¸ðµç ¿ÀºêÁ§Æ® ÆÄÀÏÀº (´Ù½Ã ÄÄÆÄÀϵǾúµç
Àü¿¡ ÄÄÆÄÀϵǾúµç °£¿¡) °°ÀÌ ¸µÅ©µÇ¾î »õ·Î¿î ÆíÁý±â ½ÇÇà ÆÄÀÏÀ» ¸¸µé¾î¾ß
ÇÑ´Ù.
°£´ÜÇÑ ¸ÞÀÌÅ© ÆÄÀÏÀº ´ÙÀ½°ú °°Àº ¸ð¾çÀÇ "·ê(rule)"·Î ±¸¼ºµÇ¾î ÀÖ´Ù:
Ÿ°Ù ... : ÀÇÁ¸¼º ... ¸í·É ... ...
Ÿ°Ù(target)Àº ÇÁ·Î±×·¥ÀÌ ¸¸µé¾î ³»´Â ÆÄÀÏÀÇ À̸§ÀÌ´Ù; Ÿ°ÙÀÇ ¿¹´Â ½ÇÇà ÆÄÀÏ È¤Àº ¿ÀºêÁ§Æ® ÆÄÀÏÀÇ À̸§ÀÌ´Ù. Ÿ°ÙÀº `clean'°ú °°ÀÌ ¼öÇàÇÒ µ¿ÀÛÀ» °¡¸®Å°´Â À̸§ÀÌ µÉ ¼öµµ ÀÖ´Ù. (see section Æ÷´Ï Ÿ°Ù).
ÀÇÁ¸¼º(dependency)´Â Ÿ°ÙÀ» ¸¸µé¶§ ¾²ÀÌ´Â ÀÔ·ÂÆÄÀÏÀÌ´Ù. ÇÑ°³ÀÇ Å¸°ÙÀÌ ¿©·¯°³ÀÇ ÆÄÀÏ¿¡ ÀÇÁ¸Çϱ⵵ ÇÑ´Ù.
¸í·É(command)´Â make
°¡ ¼öÇàÇÏ´Â µ¿ÀÛÀÌ´Ù. ÇÑ°³ÀÇ
·êÀº µÎ °³ ÀÌ»óÀÇ ¸í·É¾î·Î ±¸¼ºµÉ ¼öµµ ÀÖ°í, ÇÑ ÁÙ¿¡ ÇÑ °³¾¿ÀÇ ¸í·É¾î¸¦
¾´´Ù. ÁÖÀÇ: °¢ ¸í·ÉÀÇ ÁÙÀÇ ½ÃÀÛ ºÎºÐ¿¡ ÅÇ ¹®ÀÚ¸¦ ³Ö¾î¾ß ÇÑ´Ù!
°Ñº¸±â¿¡ ºÒºÐ¸íÇϱ⠶§¹®¿¡ ºÎÁÖÀÇÇÏ¸é ½±°Ô ½Ç¼öÇÒ ¼ö ÀÖ´Ù.
º¸Åë ·ê ¾È¿¡ ÀÇÁ¸¼º°ú ÇÔ²² ÀÖ´Â ¸í·É¾î´Â ÀÇÁ¸¼ºÁßÀÇ Çϳª¶óµµ ¹Ù²ð ¶§¸¶´Ù Ÿ°Ù ÆÄÀÏÀ» »õ·Î ¸¸µå´Â ÀÏÀ» ÇÑ´Ù. ÇÏÁö¸¸, ÀÇÁ¸¼ºÀÌ ÇÊ¿ä¾ø´Â Ÿ°ÙÀÇ °æ¿ì ·ê¿¡¼´Â ¸í·É¾î¸¸À» ÁöÁ¤ÇÑ´Ù. ¿¹¸¦ µé¾î, `clean' Ÿ°Ù°ú ¿¬°áµÈ Áö¿ì´Â ¸í·É¾î°¡ µé¾î ÀÖ´Â ·êÀº ÀÇÁ¸¼ºÀÌ ¾ø´Ù.
Áï, ·êÀº, ±× ·êÀÇ Å¸°ÙÀÎ ÆÄÀϵéÀ» ¾ðÁ¦ ¾î¶»°Ô ´Ù½Ã ¸¸µé¾î ³¾Áö¸¦
¼³¸íÇÑ´Ù. make
´Â ÀÇÁ¸¼º¿¡ µû¶ó Ÿ°ÙÀ» »õ·Î ¸¸µé°Å³ª ¾÷µ¥ÀÌÆ®ÇÒ
¸í·É¾î¸¦ ½ÇÇàÇÑ´Ù. ·êÀº ¾î¶² µ¿ÀÛÀ» ¾ðÁ¦ ¾î¶»°Ô ¼öÇàÇÒÁö ¼³¸íÇϱ⵵
ÇÑ´Ù. See section ·ê ÀÛ¼ºÇϱâ.
¸ÞÀÌÅ©ÆÄÀÏÀº ·ê ÀÌ¿ÜÀÇ ´Ù¸¥ °Íµéµµ µé¾î ÀÖÁö¸¸, °£´ÜÇÑ ¸ÞÀÌÅ©ÆÄÀÏÀº ÀÌ·¯ÇÑ ·êµé¸¸ ÀÖÀ¸¸é µµ´Ï´Ù. ·êÀº À§ÀÇ Æ²¿¡¼ º¸¿©ÁØ °Íº¸´Ù ÈξÀ º¹ÀâÇÒ ¼öµµ ÀÖÁö¸¸, ¸ðµç ·êÀº À§ÀÇ ÆÐÅÏ¿¡ Á¤È®È÷ µé¾î ¸Â´Â´Ù.
´ÙÀ½Àº edit
¶ó°í ÇÏ´Â ½ÇÇà ÆÄÀÏÀÌ ¿©´ü°³ÀÇ ¿ÀºêÁ§Æ® ÆÄÀÏ¿¡
ÀÇÁ¸ÇÏ°í, Â÷·Ê·Î ÀÌ ¿ÀºêÁ§Æ® ÆÄÀÏÀº ¿©´ü°³ÀÇ C ¼Ò½º ÆÄÀ̷ΰ¡ ¼¼°³ÀÇ Çì´õ
ÆÄÀÏ¿¡ ÀÇÁ¸ÇÏ´Â °æ¿ì¸¦ ±â¼úÇÑ °£´ÜÇÑ ¸ÞÀÌÅ©ÆÄÀÏÀÌ´Ù.
ÀÌ ¿¹¿¡¼, ¸ðµç C ÆÄÀÏÀº `defs.h' ÆÄÀÏÀ» Æ÷ÇÔÇÏ°í, ÆíÁý ¸í·ÉÀ» Á¤ÀÇÇÑ ¸î°³ ÆÄÀϵ鸸 `command.h' ÆÄÀÏÀ» Æ÷ÇÔÇÏ°í, ÆíÁý ¹öÆÛ¸¦ º¯°æÇÏ´Â ³·Àº ·¹º§ÀÇ ÆÄÀϵ鸸 `buffer.h'¸¦ Æ÷ÇÔÇÑ´Ù.
edit : main.o kbd.o command.o display.o \ insert.o search.o files.o utils.o cc -o edit main.o kbd.o command.o display.o \ insert.o search.o files.o utils.o main.o : main.c defs.h cc -c main.c kbd.o : kbd.c defs.h command.h cc -c kbd.c command.o : command.c defs.h command.h cc -c command.c display.o : display.c defs.h buffer.h cc -c display.c insert.o : insert.c defs.h buffer.h cc -c insert.c search.o : search.c defs.h buffer.h cc -c search.c files.o : files.c defs.h buffer.h command.h cc -c files.c utils.o : utils.c defs.h cc -c utils.c clean : rm edit main.o kbd.o command.o display.o \ insert.o search.o files.o utils.o
¿ì¸®´Â ±ä ÁÙÀ» ¹é½½·¡½¬-ÁٹٲÞÀ» ÀÌ¿ëÇØ ¿©·¯ ÁÙ·Î ÂÉ°³ ³õ¾Ò´Ù; ÀÌ°Ç ÇϳªÀÇ ±ä ÁÙÀ» »ç¿ëÇÑ °Í°ú ´Ù¸¦ ¹Ù°¡ ¾øÁö¸¸, Àб⠽±´Ù.
ÀÌ ¸ÞÀÌÅ© ÆÄÀÏÀ» ÀÌ¿ëÇØ `edit'¶ó´Â ½ÇÇà ÆÄÀÏÀ» ¸¸µå·Á¸é, ´ÙÀ½°ú °°ÀÌ Å¸ÀÌÇÁÇÑ´Ù:
make
ÀÌ ¸ÞÀÌÅ© ÆÄÀÏÀ» ÀÌ¿ëÇØ µð·ºÅ丮 ³»ÀÇ ½ÇÇà ÆÄÀÏ°ú ¸ðµç ¿ÀºêÁ§Æ® ÆÄÀÏÀ» Áö¿ì·Á¸é, ´ÙÀ½°ú °°ÀÌ Å¸ÀÌÇÁÇÑ´Ù:
make clean
À§ÀÇ ¸ÞÀÌÅ©ÆÄÀÏ ¿¹¿¡¼, Ÿ°ÙÀº ½ÇÇà ÆÄÀÏÀÎ `edit', ±×¸®°í ¿ÀºêÁ§Æ® ÆÄÀÏÀÎ `main.o', `kbd.o'¿Í °°Àº °ÍµéÀÌ´Ù. ÀÇÁ¸¼ºÀº `main.c'¿Í `defs.h'¿Í °°Àº ÆÄÀϵéÀÌ´Ù. »ç½Ç, °¢ `.o' ÆÄÀϵéÀº Ÿ°ÙÀ̱⵵ ÇÏ°í, ÀÇÁ¸¼ºÀ̱⵵ ÇÏ´Ù. ¸í·É¾î´Â `cc -c main.c'¿Í `cc -c kbd.c'¿Í °°Àº °ÍµéÀÌ´Ù.
Ÿ°ÙÀÌ ÆÄÀÏÀ̸é, ±× ÀÇÁ¸¼ºÀÌ ¹Ù²ð ¶§¸¶´Ù ´Ù½Ã ÄÄÆÄÀϵǰųª ´Ù½Ã ¸µÅ©µÇ¾î¾ß ÇÑ´Ù. ¿©±â¿¡ Ãß°¡·Î, ÀÇÁ¸¼ºÀÌ ÀÚµ¿À¸·Î ¸¸µé¾î Áö´Â °æ¿ì, ±× ÆÄÀϵéÀÌ ¸ÕÀú ¾÷µ¥ÀÌÆ®µÇ¾ß ÇÑ´Ù. ÀÌ ¿¹¿¡¼, `edit'´Â °¢ ¿©´ü°³ÀÇ ¿ÀºêÁ§Æ® ÆÄÀÏ¿¡ ÀÇÁ¸ÇÑ´Ù; ¿ÀºêÁ§Æ® ÆÄÀÏ `main.o'´Â `main.c' ¼Ò½º ÆÄÀÏ°ú `defs.h' Çì´õ ÆÄÀÏ¿¡ ÀÇÁ¸ÇÑ´Ù.
Ÿ°Ù°ú ÀÇÁ¸¼ºÀÌ µé¾î ÀÖ´Â ÁÙ ¹Ù·Î ´ÙÀ½¿¡ ¼Ð ¸í·É¾î°¡ ³ªÅ¸³´Ù. ÀÌ ¼Ð
¸í·É¾î´Â ¾î¶»°Ô Ÿ°Ù ÆÄÀÏÀ» ¾÷µ¥ÀÌÆ®ÇØ¾ß ÇÒÁö ¾Ë·ÁÁØ´Ù. ¸í·É¾î°¡ ÀÖ´Â
°¢ ÁÙÀÇ ¸Ç óÀ½¿¡´Â ¹Ýµå½Ã ÅÇ ¹®ÀÚ¸¦ ½á¼, ¸ÞÀÌÅ©ÆÄÀÏÀÇ ´Ù¸¥ ÁÙ°ú ±¸ºÐÇÒ
ÈÄ ÀÖ¾î¾ß µÈ´Ù. (make
´Â ¸í·É¾î°¡ ¾î¶»°Ô µ¿ÀÛÇÏ´ÂÁö¿¡ ´ëÇؼ´Â
¾Æ¹«°Íµµ ¸ð¸¥´Ù´Â »ç½ÇÀ» ¸í½ÉÇ϶ó. Ÿ°Ù ÆÄÀÏÀ» Á¦´ë·Î ¾÷µ¥ÀÌÆ®ÇÒ ¼ö
ÀÖ´Â ¸í·É¾î¸¦ ¾²´Â °Ç ¿©·¯ºÐ¿¡°Ô ´Þ·Á ÀÖ´Ù. make
°¡ ÇÏ´Â ÀÏÀº
ÁöÁ¤µÈ ·ê¿¡ µû¶ó Ÿ°Ù ÆÄÀÏÀÌ ¾÷µ¥ÀÌÆ®µÇ¾ß ÇÒ ¼ø°£¿¡ ¸í·É¾î¸¦ ½ÇÇàÇÏ´Â °Í
»ÓÀÌ´Ù.)
`clean' Ÿ°ÙÀº ÆÄÀÏÀÌ ¾Æ´Ï¶ó, ¾î¶² µ¿ÀÛÀÇ À̸§ÀÏ »ÓÀÌ´Ù. º¸Åë
»óȲ¿¡¼´Â ÀÌ ·ê¿¡ ¾²¿© ÀÖ´Â ¸í·ÉÀ» ¼öÇàÇÏÁö ¾ÊÀ» °ÍÀ̹ǷÎ,
`clean'Àº ´Ù¸¥ ¾î¶°ÇÑ ·êÀÇ ÀÇÁ¸¼ºµµ ¾Æ´Ï´Ù. °á°úÀûÀ¸·Î,
make
´Â Á÷Á¢ ÁöÁ¤ÇÏÁö ¾Ê´Â ÇÑ ÀÌ ·ê¿¡ ÀÖ´Â ¸í·ÉÀ» Àý´ë·Î ½ÇÇàÇÏÁö
¾Ê´Â´Ù. Áï ÀÌ ·êÀÇ À¯ÀÏÇÑ ¸ñÀûÀ» ÁöÁ¤ÇÑ ¸í·É¾îµéÀ» ½ÇÇàÇÏ´Â °Í »ÓÀÌ´Ù.
ÆÄÀÏ°ú °ü·ÃÀÌ ¾ø°í, ¾î¶² µ¿ÀÛÀ» ÇÏ´Â °Í»ÓÀΠŸ°ÙÀ» Æ÷´Ï
Ÿ°Ù(phony target)À̶ó°í ºÎ¸¥´Ù. ÀÌ·¯ÇÑ Å¸°Ù¿¡ ´ëÇÑ Á¤º¸´Â,
See section Æ÷´Ï Ÿ°Ù. rm
°ú °°Àº ¸í·É¾î¿¡¼ ³ª¿À´Â ¾Ö·¯¸¦
make
°¡ ¹«½ÃÇϵµ·Ï ¸¸µå´Â ¹æ¹ýÀ» º¸·Á¸é, See section Errors in Commands.
make
°¡ MakefileÀ» ó¸®Çϴ°¡
±âº»»çÇ×À¸·Î, make
´Â ¸Ç ù¹ø° Ÿ°Ù(±× À̸§ÀÌ `.'À¸·Î
½ÃÀÛÇÏÁö ¾Ê´Â Ÿ°Ù)¿¡¼ºÎÅÍ ½ÃÀÛÇÑ´Ù. ÀÌ Å¸°ÙÀ» µðÆúÆ®
°ñ(default goal)À̶ó°í ÇÑ´Ù. (°ñ(°ñ)Àº make
°¡
ÃÖÁ¾ÀûÀ¸·Î ¾÷µ¥ÀÌÆ®ÇÏ°íÀÚ Çϴ Ÿ°ÙÀ» ¸»ÇÑ´Ù. See section Arguments to Specify the Goals.)
¾Õ ÀýÀÇ °£´ÜÇÑ ¿¹Á¦¿¡¼, µðÆúÆ® °ñÀº `edit' ½ÇÇà ÆÄÀÏÀ» ¾÷µ¥ÀÌÆ®ÇÏ´Â °ÍÀÌ´Ù; ´Ù½Ã ¸»Çؼ, ¿ì¸®´Â ÀÌ ·êÀ» ¸Ç óÀ½¿¡ ½á ³õ¾Ò´Ù.
±×·¯¹Ç·Î, ´ÙÀ½ ¸í·ÉÀ» ½ÇÇàÇϸé:
make
make
´Â ÇöÀç µð·ºÅ丮ÀÇ ¸ÞÀÌÅ©ÆÄÀÏÀ» ÀÐ°í ¸Ç Ã¹¹ø°¿¡ ³ª¿À´Â ·êÀ»
ó¸®Çϱ⠽ÃÀÛÇÑ´Ù. ÀÌ ¿¹¿¡¼, ÀÌ ·êÀº `edit'¸¦ ´Ù½Ã ¸µÅ©ÇÏ´Â
°ÍÀÌ´Ù; ÇÏÁö¸¸ make
°¡ ÀÌ ·êÀ» ¿ÏÀüÈ÷ ó¸®ÇÒ ¼ö ÀÖÀ¸·Á¸é,
`edit'°¡ ÀÇÁ¸ÇÏ°í ÀÖ´Â ÆÄÀϵ鿡 ´ëÇÑ ·ê, Áï ÀÌ °æ¿ì¿¡´Â ¿ÀºêÁ§Æ®
ÆÄÀϵ鿡 ´ëÇÑ ·êµéÀ» ¸ÕÀú ó¸®ÇØ¾ß ÇÑ´Ù. ÀÌ ·êµéÀº °¢ ¼Ò½º ÆÄÀÏÀ»
ÄÄÆÄÀÏÇؼ °¢ `.o' ÆÄÀÏÀ» ¾÷µ¥ÀÌÆ®ÇÏ´Â ¹ý¿¡ ´ëÇØ ¾²¿© ÀÖ´Ù. ¼Ò½º
ÆÄÀÏ, ȤÀº ÀÇÁ¸¼º¿¡ À̸§ÀÌ ¾²¿©Áø ¾î¶² Çì´õ ÆÄÀÏÀÌ¶óµµ ¿ÀºêÁ§Æ® ÆÄÀϺ¸´Ù
³ªÁß¿¡ º¯°æµÇ¾úÀ» °æ¿ì, ȤÀº ¿ÀºêÁ§Æ® ÆÄÀÏÀÌ ¾øÀ» °æ¿ì¿¡¸¸ ÀÌ ÀçÄÄÆÄÀÏ
°úÁ¤ÀÌ ½ÇÇàµÈ´Ù.
±× Ÿ°ÙÀÌ °ñÀÇ ÀÇÁ¸¼º ºÎºÐ¿¡ ³ªÅ¸³µ±â ¶§¹®¿¡ ±× ¿ÜÀÇ ·êµéÀÌ Ã³¸®µÈ´Ù.
°ñÀÌ ÀÇÁ¸ÇÏÁö ¾Ê´Â ·êÀÌ ÀÖ´Ù¸é (ȤÀº ¾Æ¹«°Íµµ ¿©±â¿¡ ÀÇÁ¸ÇÏÁö ¾Ê´Â
°æ¿ì), ±×·¸°Ô Ç϶ó°í ÀϺη¯ make
¿¡°Ô ¾Ë·ÁÁÖÁö ¾Ê´Â ÇÑ
(make clean
°ú °°Àº ¸í·ÉÀ¸·Î), ±× ·êÀº 󸮵ÇÁö ¾Ê´Â´Ù.
¿ÀºêÁ§Æ® ÆÄÀÏÀ» ÄÄÆÄÀÏÇϱâ Àü¿¡, make
´Â ±× ÀÇÁ¸¼º, Áï ¼Ò½º ÆÄÀÏ°ú
Çãµ¥ ÆÄÀÏÀ»À» ¾÷µ¥ÀÌÆ®ÇØ¾ß ÇÒÁö »ý°¢ÇÑ´Ù. ÀÌ ¸ÞÀÌÅ©ÆÄÀÏÀº ¿©±â¿¡ ´ëÇؼ
¹«½¼ ÀÏÀ» ÇÒÁö ÁöÁ¤ÇÏÁö ¾Ê´Â´Ù---`.c'¿Í `.h' ÆÄÀÏÀº ¾î¶² ·êÀÇ
Ÿ°Ùµµ ¾Æ´Ï´Ù---Áï make
´Â ÀÌ ÆÄÀÏ¿¡ ´ëÇØ ¾Æ¹«°Íµµ ÇÏÁö ¾Ê´Â´Ù.
ÇÏÁü³ª make
´Â BisonÀ̳ª Yacc°¡ ¸¸µé¾î ³»´Â ÆÄÀϵé ó·³, ÀÚµ¿À¸·Î
¸¸µé¾îÁö´Â C ÇÁ·Î±×·¥°ú °°Àº °æ¿ì¿¡´Â ÁöÁ¤µÈ ·ê¿¡ µû¶ó ¾÷µ¥ÀÌÆ®ÇÑ´Ù.
ÇÊ¿äÇÑ ¿ÀºêÁ§Æ® ÆÄÀÏÀÌ ¸ðµÎ ´Ù½Ã ÄÄÆÄÀÏµÈ ´ÙÀ½¿¡, make
´Â
`edit'¸¦ ´Ù½Ã ¸µÅ©ÇÒÁö ¾Æ´ÒÁö °áÁ¤ÇÏ°Ô µÈ´Ù. `edit' ÆÄÀÏÀÌ
¾ø°Å³ª, ¿ÀºêÁ§Æ® ÆÄÀÏÁßÀÇ Çϳª¶óµµ `edit' ÆÄÀϺ¸´Ù ÃÖ±Ù¿¡ ¼öÁ¤µÈ
°æ¿ì ´Ù½Ã ¸µÅ©ÇØ¾ß ÇÑ´Ù. ¿ÀºêÁ§Æ® ÆÄÀÏÀÌ ¸· ÄÄÆÄÀÏµÈ °æ¿ì, `edit'
ÆÄÀϺ¸´Ù ÃÖ±Ù¿¡ ¼öÁ¤µÇ¾úÀ» Å×´Ï, `edit'°¡ ´Ù½Ã ¸µÅ©µÈ´Ù.
±×·¡¼, `insert.c' ÆÄÀÏÀ» º¯°æÇÏ°í make
¸¦ ½ÇÇàÇÑ °æ¿ì,
make
´Â `insert.c'¸¦ ÄÄÆÄÀÏÇؼ `insert.o' ÆÄÀÏÀ»
¾÷µ¥ÀÌÆ®ÇÏ°í, `edit'¸¦ ¸µÅ©ÇÑ´Ù. `command.h' ÆÄÀÏÀ» ¹Ù²Ù°í
make
¸¦ ½ÇÇàÇϸé, make
´Â `kbd.o', `command.o',
±×¸®°í `files.o' ¿ÀºêÁ§Æ® ÆÄÀÏÀ» ´Ù½Ã ÄÄÆÄÀÏÇÏ°í `edit' ÆÄÀÏÀ»
¸µÅ©ÇÒ °ÍÀÌ´Ù.
¿ì¸®°¡ »ç¿ëÇÏ°í ÀÖ´Â ¿¹¿¡¼, `edit'ÀÇ ·ê¿¡ ÀÖ´Â ¿ÀºêÁ§Æ® ÆÄÀÏÀ» µÎ¹ø ¹Ýº¹Çؼ ¿°ÅÇØ¾ß ÇÑ´Ù (¿©±â¿¡ ´Ù½Ã Çѹø ¹Ýº¹ÇÑ´Ù):
edit : main.o kbd.o command.o display.o \ insert.o search.o files.o utils.o cc -o edit main.o kbd.o command.o display.o \ insert.o search.o files.o utils.o
ÀÌ·¸°Ô Áߺ¹Çؼ ¾²¸é ¾Ö·¯°¡ ¹ß»ýÇϱ⠽±´Ù: ¸¸¾à »õ·Î¿î ¿ÀºêÁ§Æ® ÆÄÀÏÀÌ ÀÌ ½Ã½ºÅÛ¿¡ Ãß°¡µÉ °æ¿ì, ¾î¶² ÇÑ ºÎºÐ¿¡¸¸ Ãß°¡ÇÏ°í, ´Ù¸¥ ºÎºÐ¿¡¼´Â Àؾî¹ö¸± ¼öµµ ÀÖ´Ù. º¯¼ö¸¦ »ç¿ëÇؼ ÀÌ·± À§ÇèÀ» ¾ø¾Ö°í ¸ÞÀÌÅ©ÆÄÀÏÀ» °£´ÜÇÏ°Ô ¸¸µé ¼ö ÀÖ´Ù. º¯¼ö(variable)´Â ÀÏ´Ü Çѹø ¾î¶² ¹®ÀÚ¿·Î ÁöÁ¤µÇ¸é ³ªÁß¿¡ ¿©·¯ ±ºµ¥¿¡¼ ±× ¹®ÀÚ¿ ´ë½Å¿¡ »ç¿ëµÉ ¼ö ÀÖ´Ù (see section How to Use Variables)
°¢ ¸ÞÀÌÅ© ÆÄÀÏÀÌ objects
, OBJECTS
, objs
,
OBJS
, obj
, ȤÀº OBJ
¶ó´Â À̸§ÀÇ º¯¼ö°¡ ÀÖ¾î¼ ¸ðµç
¿ÀºêÁ§Æ® ÆÄÀÏÀÇ À̸§ÀÇ ¸®½ºÆ®¸¦ °®°í ÀÖ´Â °ÍÀÌ Ç¥ÁØÀûÀ¸·Î ¾²ÀÌ´Â
¹æ¹ýÀÌ´Ù. ¸ÞÀÌÅ© ÆÄÀÏ¿¡ ´ÙÀ½°ú °°Àº ÁÙ·Î ÀÌ·¯ÇÑ objects
º¯¼ö¸¦
Á¤ÀÇÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù:
objects = main.o kbd.o command.o display.o \ insert.o search.o files.o utils.o
±× ´ÙÀ½¿¡, ¿ÀºêÁ§Æ® ÆÄÀÏÀÇ À̸§À» ¾²°í ½ÍÀº °÷¸¶´Ù, `$(objects)'¶ó°í ¾²¸é º¯¼öÀÇ °ªÀ¸·Î ´ëüµÈ´Ù. (see section How to Use Variables).
´ÙÀ½Àº ¿ÀºêÁ§Æ® ÆÄÀÏ¿¡ ´ëÇÑ º¯¼ö¸¦ »ç¿ëÇßÀ» °æ¿ì ÀÌ °£´ÜÇÑ ¸ÞÀÌÅ© ÆÄÀÏÀÌ ¾î¶»°Ô µÇ´ÂÁö º¸¿©ÁØ´Ù:
objects = main.o kbd.o command.o display.o \ insert.o search.o files.o utils.o edit : $(objects) cc -o edit $(objects) main.o : main.c defs.h cc -c main.c kbd.o : kbd.c defs.h command.h cc -c kbd.c command.o : command.c defs.h command.h cc -c command.c display.o : display.c defs.h buffer.h cc -c display.c insert.o : insert.c defs.h buffer.h cc -c insert.c search.o : search.c defs.h buffer.h cc -c search.c files.o : files.c defs.h buffer.h command.h cc -c files.c utils.o : utils.c defs.h cc -c utils.c clean : rm edit $(objects)
make
ÀÇ ¸í·É¾î ÁÙÀ̱â
°¢ C ¼Ò½º ÆÄÀÏÀ» ÄÄÆÄÀÏÇÏ´Â ¸í·ÉÀ» ¸Å¹ø ¾µ ÇÊ¿ä°¡ ¾ø´Ù. ¿Ö³ÄÇϸé
make
°¡ ÀÌ¹Ì ¾Ë°í Àֱ⠶§¹®ÀÌ´Ù: `.o' ÆÄÀÏ¿¡ ÇØ´çµÇ´Â
`.c' ÆÄÀÏ¿¡¼ºÎÅÍ `cc -c' ¸í·ÉÀ» »ç¿ëÇؼ `.o' ÆÄÀÏÀ»
¾÷µ¥ÀÌÆ®ÇÏ´Â ¾Ï¹¬ÀûÀÎ ·ê(implicit rule)ÀÌ ÀÖ´Ù. ¿¹¸¦ µé¾î,
`main.c'¸¦ ÄÄÆÄÀÏÇؼ `main.o'¸¦ ¸¸µé ¶§´Â `cc -c main.c
-o main.o' ¸í·ÉÀ» »ç¿ëÇÒ °ÍÀÌ´Ù. ±×·¯¹Ç·Î ¿ÀºêÁ§Æ® ÆÄÀÏ¿¡ ´ëÇÑ ·ê¿¡¼
¸í·É¾îµéÀ» »ý·«ÇÒ ¼ö ÀÖ´Ù. See section ¾Ï¹¬ÀûÀÎ ·ê »ç¿ëÇϱâ.
`.c' ÆÄÀÏÀ» ÀÌ·¸°Ô ÀÚµ¿À¸·Î »ç¿ëÇÒ °æ¿ì, ÀÇÁ¸¼º ¸®½ºÆ®¿¡µµ ÀÚµ¿À¸·Î Ãß°¡µÈ´Ù. ±×·¯¹Ç·Î ¸í·É¾î¸¦ »ý·«ÇÑ °Íó·³, ÀÇÁ¸¼º¿¡¼ `.c' ÆÄÀϵµ »ý·«ÇÒ ¼ö ÀÖ´Ù.
´ÙÀ½Àº ÀÌ µÎ°¡Áö º¯°æ»çÇ×À» Æ÷ÇÔÇÑ ¿¹Á¦ ¸ÞÀÌÅ© ÆÄÀÏÀÇ ÀüüÀε¥, ¿©±â¼
º¯¼ö objects
´Â Àü¿¡¼ Á¦½ÃµÈ °Íó·³ º¯°æµÇ¾ú´Ù:
objects = main.o kbd.o command.o display.o \ insert.o search.o files.o utils.o edit : $(objects) cc -o edit $(objects) main.o : defs.h kbd.o : defs.h command.h command.o : defs.h command.h display.o : defs.h buffer.h insert.o : defs.h buffer.h search.o : defs.h buffer.h files.o : defs.h buffer.h command.h utils.o : defs.h .PHONY : clean clean : -rm edit $(objects)
ÀÌ°ÍÀÌ ½ÇÁ¦ È°¿ëÇÒ ¶§ ¸ÞÀÌÅ© ÆÄÀÏÀ» ÀÛ¼ºÇÏ´Â ¹æ¹ýÀÌ´Ù. (`clean'°ú °ü·ÃµÈ º¹ÀâÇÑ »çÇ×µéÀº ´Ù¸¥ °÷¿¡¼ ¼³¸íÇÑ´Ù. section Æ÷´Ï Ÿ°Ù, and see section Errors in CommandsÀ» º¸±â ¹Ù¶õ´Ù.)
¾Ï¹¬ÀûÀÎ ·êÀº ¸Å¿ì Æí¸®ÇϹǷÎ, ¸Å¿ì Áß¿äÇÏ´Ù. ¿©·¯ºÐÀº ÀÌ ¾Ï¹¬ÀûÀÎ ·êµéÀÌ ÀÚÁÖ »ç¿ëµÇ´Â °É º¸°Ô µÉ °ÍÀÌ´Ù.
¸ÞÀÌÅ©ÆÄÀÏÀÇ ¿ÀºêÁ§Æ® ÆÄÀϵéÀÌ ¾Ï¹¬ÀûÀÎ ·ê¿¡ ÀÇÇØ ¸¸µé¾î Áö´Â °æ¿ì, ¶Ç ´Ù¸¥ ½ºÅ¸ÀÏÀÇ ¸ÞÀÌÅ©ÆÄÀϵµ °¡´ÉÇÏ´Ù. ÀÌ ¸ÞÀÌÅ©ÆÄÀÏÀÇ ½ºÅ¸ÀÏ¿¡¼, Ÿ°Ù ´ë½Å¿¡ ÀÇÁ¸¼ºµéÀ» Çϳª·Î ÇÕÄ£´Ù. ÀÌ ½ºÅ¸ÀÏÀº ´ÙÀ½°ú °°´Ù:
objects = main.o kbd.o command.o display.o \ insert.o search.o files.o utils.o edit : $(objects) cc -o edit $(objects) $(objects) : defs.h kbd.o command.o files.o : command.h display.o insert.o search.o files.o : buffer.h
`defs.h'´Â ¸ðµç ¿ÀºêÁ§Æ® ÆÄÀÏÀÇ ÀÇÁ¸¼ºÀ¸·Î ÁÖ¾îÁ³´Ù; `command.h'¿Í `buffer.h'´Â °Å±â¿¡ ¿°ÅµÈ ÁöÁ¤µÈ ¿ÀºêÁ§Æ®ÆÄÀÏÀÇ ÀÇÁ¸¼ºÀÌ´Ù.
ÀÌ ½ºÅ¸ÀÏÀÌ ´õ ÁÁÀºÁö ¾Æ´ÑÁö´Â ÃëÇâÀÇ Â÷ÀÌÀÌ´Ù: ÀÌ ½ºÅ¸ÀÏÀº ´õ °£´ÜÇÏÁö¸¸, °¢ Ÿ°Ù¿¡ ´ëÇÑ Á¤º¸¸¦ ÇÑ ±ºµ¥¿¡ ¾²´Â ÆíÀÌ ´õ ±ú²ýÇÏ´Ù°í »ý°¢ÇÏ´Â »ç¶÷µéÀº ÀÌ ½ºÅ¸ÀÏÀ» ½È¾îÇÑ´Ù.
ÇÁ·Î±Û¸ÅÀ» ÄÄÆÄÀÏÇϴ°͸¸ÀÌ ·êÀ» ÀÛ¼ºÇÏ´Â ¸ñÀûÀº ¾Æ´Ï´Ù. ¸ÞÀÌÅ©ÆÄÀÏÀº ÇÁ·Î±×·¥À» ÄÄÆÄÀÏÇÏ´Â °Í ÀÌ¿ÜÀÇ µ¿ÀÛÀ» ¾î¶»°Ô ÇÏ´ÂÁö ¾Ë·ÁÁֱ⵵ ÇÑ´Ù: ¿¹¸¦ µé¾î, ¸ðµç ¿ÀºêÁ§Æ® ÆÄÀÏ°ú ½ÇÇà ÆÄÀÏÀ» Áö¿ö¼ µð·ºÅ丮¸¦ û¼Ò(`clean')ÇÏ´Â ¹æ¹ý°ú °°Àº °ÍÀ» ±â´ÉÀ» ÇÏ´Â ·êÀÌ ÀÖ´Ù.
´ÙÀ½Àº ¿ì¸®ÀÇ ¿¹Á¦ ÆíÁý±â¸¦ û¼ÒÇÏ´Â make
·êÀÌ´Ù.
clean: rm edit $(objects)
½ÇÁ¦ °æ¿ì, ¿¹»óÄ¡ ¸øÇÑ »óȲ¿¡ ´ëóÇÒ ¼ö ÀÖµµ·Ï Á» ´õ º¹ÀâÇÏ°Ô ·êÀ» ÀÛ¼ºÇØ¾ß ÇÒ °ÍÀÌ´Ù. ´ÙÀ½°ú °°ÀÌ ÇÑ´Ù:
.PHONY : clean clean : -rm edit $(objects)
ÀÌ·¸°Ô Çϸé `clean'À̶ó´Â À̸§ÀÇ ½ÇÁ¦ ÆÄÀÏÀÌ ÀÖÀ» °æ¿ì¿¡µµ
make
°¡ È¥µ¿µÇ´Â ÀÏÀÌ ¾ø°í rm
¿¡¼ ¾Ö·¯°¡ ¹ß»ýÇصµ °è¼ÓÇÑ´Ù.
(section Æ÷´Ï Ÿ°Ù, and see section Errors in Commands@À»{} º¸¶ó.)
ÀÌ¿Í °°Àº ·êÀº ¸ÞÀÌÅ© ÆÄÀÏÀÇ ¸Ç ¾Õ¿¡ À§Ä¡Çؼ´Â ¾ÈµÈ´Ù. ÀÌ ·êÀÌ ±âº»
·ê·Î µ¿ÀÛ½ÃÅ°·Á°í ÇÏÁö´Â ¾ÊÀ» Å×´Ï ¸»ÀÌ´Ù! Áï, ÀÌ ¸ÞÀÌÅ©ÆÄÀÏ ¿¹Á¦¿¡¼,
ÆíÁý±â¸¦ ´Ù½Ã ÄÄÆÄÀÏÇÏ´Â edit
·êÀÌ ±âº» °ñ·Î ³²ÀÌ ÀÖ¾î¾ß ÇÒ
°ÍÀÌ´Ù.
clean
˼ edit
ÀÇ ÀÇÁ¸¼ºÀÌ ¾Æ´Ï¹Ç·Î, make
¸í·ÉÀ» ÀÎÀÚ ¾øÀÌ ½ÇÇà½ÃÄ×À» °æ¿ì ÀÌ ·êÀº ½ÇÇàµÇÁö ¾ÊÀ» °ÍÀÌ´Ù. ÀÌ ·êÀÌ
½ÇÇàµÇµµ·Ï ÇÏ·Á¸é `make clean'À̶ó°í ŸÀÌÇÁÇØ¾ß ÇÑ´Ù.
See section ¸í·É¾î ½ÇÇà.
Go to the first, previous, next, last section, table of contents.