Next: Utilities in Makefiles, Up: Makefile Conventions [Contents]
¤¢¤é¤æ¤ëMakefile¤Ï¼¡¤Î¹Ô¤ò´Þ¤à¤Ù¤¤À¡£
SHELL = /bin/sh
SHELL
ÊÑ¿ô¤¬´Ä¶¤«¤é¼õ¤±·Ñ¤¬¤ì¤ë¤è¤¦¤Ê¥·¥¹¥Æ¥à¾å¤Ç¤ÎÌäÂê¤òÈò¤±¤ë¤¿
¤á¤Ë¡£(¤³¤ì¤ÏGNU make
¤Ç¤ÏÌäÂê¤Ë¤Ï·è¤·¤Æ¤Ê¤é¤Ê¤¤¡£)
°Û¤Ê¤ëmake
¥×¥í¥°¥é¥à¤Ï¸ß´¹À¤Î¤Ê¤¤ÀÜÈø¼¤Î¥ê¥¹¥È¤È°ÅÌۤε¬Â§¤ò»ý
¤Á¡¢¤³¤ì¤Ï¤È¤¤É¤º®Íð¤ä¤ª¤«¤·¤Êµóư¤òÀ¸¤ß½Ð¤¹¡£¤À¤«¤éÆÃÄê¤ÎMakefile¤Çɬ
ÍפȤ¹¤ëÀÜÈø¼¤À¤±¤ò»ÈÍѤ¹¤ë¤Î¤Ë¡¢ÌÀ¼¨Åª¤ËÀÜÈø¼¤Î¥ê¥¹¥È¤òÀßÄꤹ¤ë¤Î¤ÏÎÉ
¤¤¹Í¤¨¤À¡£
.SUFFIXES: .SUFFIXES: .c .o
ºÇ½é¤Î¹Ô¤ÏÀÜÈø¼¤Î¥ê¥¹¥È¤ò½èʬ¤·¡¢ÆóÈÖÌܤϤ³¤ÎMakefile¤Ç°ÅÌۤε¬Â§¤ÎÂÐ¾Ý ¤Ë¤Ê¤ë¤«¤â¤·¤ì¤Ê¤¤ÀÜÈø¼¤¹¤Ù¤Æ¤òƳÆþ¤¹¤ë¡£
.¤¬¥³¥Þ¥ó¥É¼Â¹Ô¤Î¥Ñ¥¹¤ËÆþ¤Ã¤Æ¤¤¤ë¤È²¾Äꤷ¤Æ¤Ï¤¤¤±¤Ê¤¤¡£make¤Î´Ö¤Ë ¤¢¤Ê¤¿¤Î¥Ñ¥Ã¥±¡¼¥¸¤Î°ìÉô¤Ç¤¢¤ë¥×¥í¥°¥é¥à¤òÁö¤é¤»¤ëɬÍפ¬¤¢¤ë¤È¤¡¢¤½¤Î¥× ¥í¥°¥é¥à¤¬make¤Î°ìÉô¤È¤·¤Æ¹½ÃÛ¤µ¤ì¤ë¤Ê¤é./¤ò»È¤¤¡¢¤â¤·¥Õ¥¡¥¤¥ë¤¬ ¥½¡¼¥¹¡¦¥³¡¼¥É¤ÎÊѹ¹¤µ¤ì¤Ê¤¤Éôʬ¤Ê¤é¡¢$(srcdir)/¤ò»È¤¦¤è¤¦¤Ë¤·¤Æ ¤¯¤À¤µ¤¤¡£¤³¤ì¤é¤ÎÀÜÆ¬¼¤Î°ì¤Ä¤ò»È¤ï¤Ê¤¤¤È¡¢¸½ºß¤Î¸¡º÷¥Ñ¥¹¤¬»È¤ï¤ì¤ë¡£
./(¹½Ãۥǥ£¥ì¥¯¥È¥ê)¤È$(srcdir)/(¥½¡¼¥¹¡¦¥Ç¥£¥ì ¥¯¥È¥ê)¤Î¶èÊ̤ϡ¢¥æ¡¼¥¶¤Ïconfigure¤Ë‘--srcdir’¥ª¥×¥·¥ç¥ó¤ò »È¤Ã¤ÆÊ̤Υǥ£¥ì¥¯¥È¥ê¤Ç¹½ÃÛ¤¹¤ë¤³¤È¤¬¤Ç¤¤ë¤Î¤Ç¡¢½ÅÍפǤ¢¤ë¡£¼¡¤Î½ñ¼°¤Î µ¬Â§¤Ï¹½Ãۥǥ£¥ì¥¯¥È¥ê¤¬¥½¡¼¥¹¡¦¥Ç¥£¥ì¥¯¥È¥ê¤Ç¤Ï¤Ê¤¤¤È¤¼ºÇÔ¤¹¤ë¡£ foo.man¤Èsedscript¤Ï¥½¡¼¥¹¡¦¥Ç¥£¥ì¥¯¥È¥ê¤ÎÃæ¤Ë¤¢¤ë¤«¤é¤À¡£
foo.1 : foo.man sedscript sed -e sedscript foo.man > foo.1
GNU make
¤ò»È¤¦¤È¤¡¢¥½¡¼¥¹¥Õ¥¡¥¤¥ë¤ò¸«ÉÕ¤±¤ë¤Î¤Ë‘VPATH’¤òÍê
¤ê¤Ë¤¹¤ë¤³¤È¤Ï¡¢Ã±°ì¤Î°Í¸´Ø·¸¥Õ¥¡¥¤¥ë¤¬¤¢¤ë¾ì¹ç¤Ë¤Ï¾å¼ê¤¯¹Ô¤¯¤À¤í¤¦¡£
make
¤Î¼«Æ°ÊÑ¿ô‘$<’¤Ï¡¢¥½¡¼¥¹¥Õ¥¡¥¤¥ë¤¬¤É¤³¤Ë¤¢¤Ã¤Æ¤â¡¢¤½¤ì¤ò
ɽ¤¹¤«¤é¡£(make
¤Î¤¿¤¯¤µ¤ó¤Î¥Ð¡¼¥¸¥ç¥ó¤Ï°ÅÌÛŪµ¬Â§¤Ç¤À¤±‘$<’
¤òÀßÄꤹ¤ë¡£)
foo.o : bar.c $(CC) -I. -I$(srcdir) $(CFLAGS) -c bar.c -o foo.o
¤³¤Î¤è¤¦¤ÊMakefile¤Î¥¿¡¼¥²¥Ã¥È¤ÏÂå¤ï¤ê¤Ë¼¡¤Î¤è¤¦¤Ë½ñ¤«¤ì¤ë¤Ù¤¤À¡£
foo.o : bar.c $(CC) -I. -I$(srcdir) $(CFLAGS) -c $< -o $@
‘VPATH’¤¬Àµ¤·¤¯Æ¯¤¯¤è¤¦¤Ë¤¹¤ë¤¿¤á¤Ë¡£¥¿¡¼¥²¥Ã¥È¤¬Ê£¿ô¤Î°Í¸´Ø·¸¤ò»ý ¤Ä¤È¤¡¢ÌÀ¼¨Åª¤Ê‘$(srcdir)’¤ò»È¤¦¤³¤È¤¬¤½¤Îµ¬Â§¤ò¾å¼ê¤¯Æ¯¤«¤»¤ë°ìÈÖ ´Êñ¤ÊÊýË¡¤À¡£Î㤨¤Ð¡¢foo.1¤ËÂФ¹¤ë¥¿¡¼¥²¥Ã¥È¤Ï¼¡¤Î¤è¤¦¤Ë½ñ¤«¤ì¤Æ ¤ë¤Î¤¬°ìÈÖÎɤ¤¡£
foo.1 : foo.man sedscript sed -e $(srcdir)/sedscript $(srcdir)/foo.man > $@
GNU¤ÎÇÛÉÛʪ¤ÏÉáÄÌ¥½¡¼¥¹¥Õ¥¡¥¤¥ë¤Ç¤Ï¤Ê¤¤¡¢¤¤¤¯¤Ä¤«¤Î¥Õ¥¡¥¤¥ë¤ò´Þ¤à¡£—Îã ¤¨¤Ð¡¢Info¥Õ¥¡¥¤¥ë¤äAutoconf¡¢Automake¡¢Bison¤äFlex¤«¤é¤Î½ÐÎϤÀ¡£¤³¤ì¤é ¤Î¥Õ¥¡¥¤¥ë¤ÏÄ̾諒¡¼¥¹¡¦¥Ç¥£¥ì¥¯¥È¥ê¤Ë¸½¤ì¤ë¤Î¤Ç¡¢¤½¤ì¤é¤Ï¹½Ãۥǥ£¥ì¥¯¥È ¥ê¤Ç¤Ï¤Ê¤¯¡¢¾ï¤Ë¥½¡¼¥¹¡¦¥Ç¥£¥ì¥¯¥È¥ê¤Ë¸½¤ì¤ë¤Ù¤¤À¡£¤À¤«¤é¤½¤ì¤é¤ò¹¹¿·¤¹ ¤ëMakefile¤Îµ¬Â§¤Ï¥½¡¼¥¹¡¦¥Ç¥£¥ì¥¯¥È¥ê¤Ë¹¹¿·¤µ¤ì¤¿¥Õ¥¡¥¤¥ë¤òÃÖ¤¯¤Ù¤¤À¡£
¤·¤«¤·¤Ê¤¬¤é¡¢¤â¤·¥Õ¥¡¥¤¥ë¤¬ÇÛÉÛʪ¤Ë¸½¤ì¤Ê¤¤¤Ê¤é¡¢Makefile¤Ï¥½¡¼¥¹¡¦¥Ç¥£ ¥ì¥¯¥È¥ê¤Ë¤½¤ì¤òÃÖ¤¯¤Ù¤¤Ç¤Ï¤Ê¤¤¡£¤Ê¤¼¤Ê¤é¡¢ÉáÄ̤δĶ¤Ç¥×¥í¥°¥é¥à¤ò¹½ÃÛ ¤¹¤ë¤³¤È¤Ç¡¢¤É¤ó¤ÊÊýË¡¤Ç¤â¥½¡¼¥¹¡¦¥Ç¥£¥ì¥¯¥È¥ê¤òÊѹ¹¤¹¤ë¤Ù¤¤Ç¤Ï¤Ê¤¤¤«¤é ¤À¡£
¹½Ãۤȥ¤¥ó¥¹¥È¡¼¥ë¤Î¥¿¡¼¥²¥Ã¥È¤ò¾¯¤Ê¤¯¤È¤â(¤½¤·¤Æ¤½¤ì¤é¤Î¥µ¥Ö¥¿¡¼¥²¥Ã
¥ÈÁ´¤Æ¤¬)ÊÂÎómake
¤ÇÀµ¤·¤¯Æ¯¤¯¤è¤¦¤Ë»î¤ß¤Ê¤µ¤¤¡£