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


¸ÞÀÌÅ©ÆÄÀÏ¿¡ ´ëÇÑ ¼Ò°³

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.