Next: , Previous: Utilities in Makefiles, Up: Makefile Conventions   [Contents]


7.2.3 ¥³¥Þ¥ó¥É»ØÄê¤ÎÊÑ¿ô

Makefile¤Ï¤¢¤ë¥³¥Þ¥ó¥É¤ä¥ª¥×¥·¥ç¥ó¤Ê¤É¤ò¾å½ñ¤­¤¹¤ë¤¿¤á¤ËÊÑ¿ô¤òÄ󶡤¹¤ë¤Ù ¤­¤À¡£

¤È¤ê¤ï¤±¡¢¤Û¤È¤ó¤É¤Î¥æ¡¼¥Æ¥£¥ê¥Æ¥£¡¦¥×¥í¥°¥é¥à¤òÊÑ¿ô¤òÄ̤·¤ÆÁö¤é¤»¤ë¤Ù¤­ ¤À¡£¤À¤«¤é¡¢¤â¤·Bison¤ò»È¤¦¤Ê¤é¡¢BISON¤È̾ÉÕ¤±¤é¤ì¤¿¡¢¤½¤Î¥Ç¥Õ¥© ¥ë¥È¤ÎÃͤ¬‘BISON = bison’¤ÈÀßÄꤵ¤ì¤Æ¤¤¤ëÊÑ¿ô¤ò»ý¤Á¡¢Bison¤ò»È¤¦É¬ Íפ¬¤¢¤ë¤È¤­¤Ë¤Ï¤¤¤Ä¤Ç¤â$(BISON)¤ò»È¤Ã¤Æ¤½¤ì¤ò»²¾È¤·¤Ê¤µ¤¤¡£

ln¡¢rm¡¢mv¤Ê¤É¤Ê¤É¤Î¤è¤¦¤Ê¥Õ¥¡¥¤¥ë´ÉÍý¥æ¡¼¥Æ¥£¥ê¥Æ¥£ ¤Ï¤³¤Î¤ä¤êÊý¤ÎÊÑ¿ô¤òÄ̤·¤¿»²¾È¤ò¤¹¤ëɬÍפϤʤ¤¡£¥æ¡¼¥¶¤Ï¤½¤ì¤é¤ò¾¤Î¥×¥í ¥°¥é¥à¤ÈÃÖ¤­´¹¤¨¤ëɬÍפ¬¤Ê¤¤¤Î¤Ç¡£

¤½¤ì¤¾¤ì¤Î¥×¥í¥°¥é¥à̾ÊÑ¿ô¤Ï¡¢¥×¥í¥°¥é¥à¤Ë¥ª¥×¥·¥ç¥ó¤òÍ¿¤¨¤ë¤Î¤Ë»È¤ï¤ì¤ë ¥ª¥×¥·¥ç¥óÊÑ¿ô¤È°ì½ï¤Ë»È¤ï¤ì¤ë¤Ù¤­¤À¡£¥ª¥×¥·¥ç¥óÊÑ¿ô¤Î̾Á°¤òÆÀ¤ë¤Î¤Ë¥×¥í ¥°¥é¥à̾ÊÑ¿ô¤Î̾Á°¤Ë‘FLAGS’¤òÉÕ¤±²Ã¤¨¤Ê¤µ¤¤¡£—Î㤨¤Ð¡¢ BISONFLAGS¤Î¤è¤¦¤Ë¡£(C¥³¥ó¥Ñ¥¤¥é¤ËÂФ¹¤ëCFLAGS¡¢yacc¤ËÂФ¹ ¤ëYFLAGS¡¢lex¤ËÂФ¹¤ëLFLAGS¤Î̾Á°¤Ï¤³¤Îµ¬Â§¤Ë¤ÏÎ㳰Ū¤À¤¬¡¢ ²æ¡¹¤Ï¤½¤ì¤é¤Ïɸ½àŪ¤Ê¤Î¤Ç¤½¤¦¤·¤Æ¤ª¤¯¡£) ¥×¥ê¥×¥í¥»¥Ã¥µ¤òÁö¤é¤»¤ë¤É¤Î¥³ ¥ó¥Ñ¥¤¥ë¤Î¥³¥Þ¥ó¥É¤Ç¤âCPPFLAGS¤ò»È¤¤¡¢ld¤ÎľÀÜŪ¤Ê»ÈÍѤÀ¤± ¤Ç¤Ï¤Ê¤¯¡¢¥ê¥ó¥¯¤ò¹Ô¤¦¤É¤Î¥³¥ó¥Ñ¥¤¥ë¤Î¥³¥Þ¥ó¥É¤Ç¤âLDFLAGS¤ò»È¤¤¤Ê ¤µ¤¤¡£

¤â¤·¤¢¤ë¥Õ¥¡¥¤¥ë¤ÎŬÀڤʥ³¥ó¥Ñ¥¤¥ë¤Ë»È¤ï¤ì¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤C¥³¥ó¥Ñ ¥¤¥é¤Î¥ª¥×¥·¥ç¥ó¤¬¤¢¤ì¤Ð¡¢CFLAGS¤Ë¤½¤ì¤é¤òÆþ¤ì¤Æ¤Ï¤¤¤±¤Ê¤¤¡£¥æ¡¼ ¥¶¤ÏCFLAGS¤ò¼«Ê¬¤Ç¼«Í³¤Ë»ØÄê¤Ç¤­¤ë¤È´üÂÔ¤¹¤ë¡£Âå¤ï¤ê¤Ë¡¢ CFLAGS¤È¤ÏÆÈΩ¤ËɬÍפʥª¥×¥·¥ç¥ó¤òC¥³¥ó¥Ñ¥¤¥é¤ËÅϤ¹¤è¤¦¤ËÄ´À°¤·¤Ê ¤µ¤¤¡£¼¡¤Î¤è¤¦¤Ë¡¢¤½¤ì¤é¤òÌÀ¼¨Åª¤Ë¥³¥ó¥Ñ¥¤¥ë¤Î¥³¥Þ¥ó¥É¤Ë½ñ¤¯¤«¡¢°ÅÌۤε¬ §¤òÄêµÁ¤¹¤ë¤³¤È¤Ë¤è¤Ã¤Æ¡£

CFLAGS = -g
ALL_CFLAGS = -I. $(CFLAGS)
.c.o:
        $(CC) -c $(CPPFLAGS) $(ALL_CFLAGS) $<

-g’¥ª¥×¥·¥ç¥ó¤òCFLAGS¤ËÆþ¤ì¤Ê¤µ¤¤¡£¤Ê¤¼¤Ê¤é¡¢¤½¤ì¤ÏŬÀڤʥ³ ¥ó¥Ñ¥¤¥ë¤Ë¤ÏɬÍפǤϤʤ¤¤«¤é¤À¡£¤½¤ì¤òñ¤Ë¿ä¾©¤µ¤ì¤ë¥Ç¥Õ¥©¥ë¥È¤Ç ¤¢¤ë¤È¹Í¤¨¤ë¤³¤È¤¬¤Ç¤­¤ë¡£¤â¤·¥Ñ¥Ã¥±¡¼¥¸¤¬¥Ç¥Õ¥©¥ë¥È¤ÇGCC¤Ç¥³¥ó¥Ñ¥¤¥ë¤µ ¤ì¤ë¤è¤¦¤ËÀßÄꤵ¤ì¤Æ¤¤¤ë¤Ê¤é¡¢CFLAGS¤Î¥Ç¥Õ¥©¥ë¥È¤ÎÃͤˑ-O’¤â Æþ¤ì¤Æ¤â¤¤¤¤¡£

¥æ¡¼¥¶¤¬Â¾¤ò¾å½ñ¤­¤¹¤ë¤Î¤ËCFLAGS¤ò»È¤¦¤³¤È¤¬¤Ç¤­¤ë¤Î¤Ç¡¢ CFLAGS¤ò¥³¥ó¥Ñ¥¤¥ë¤Î¥³¥Þ¥ó¥É¤ÎºÇ¸å¡¢¥³¥ó¥Ñ¥¤¥é¤Î¥ª¥×¥·¥ç¥ó¤ò´Þ¤à ¾¤ÎÊÑ¿ô¤Î¸å¤ËÃÖ¤­¤Ê¤µ¤¤¡£

CFLAGS¤Ï¡¢¥³¥ó¥Ñ¥¤¥ë¤ò¹Ô¤¦¤Î¤È¥ê¥ó¥¯¤ò¹Ô¤¦Î¾Êý¤Î¡¢C¥³¥ó¥Ñ¥¤¥é¤Î¤¢ ¤é¤æ¤ëµ¯Æ°¤Ç»È¤ï¤ì¤ë¤Ù¤­¤À¡£

¤¢¤é¤æ¤ëMakefile¤ÏINSTALL¤È¤¤¤¦ÊÑ¿ô¤òÄêµÁ¤¹¤ë¤Ù¤­¤Ç¡¢¤½¤ì¤Ï¥Õ¥¡¥¤ ¥ë¤ò¥·¥¹¥Æ¥à¤Ë¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ë¤¿¤á¤Î´ðËÜŪ¤Ê¥³¥Þ¥ó¥É¤Ç¤¢¤ë¡£

¤¢¤é¤æ¤ëMakefile¤Ï¤Þ¤¿INSTALL_PROGRAM¤ÈINSTALL_DATA¤È¤¤¤¦ ÊÑ¿ô¤òÄêµÁ¤¹¤ë¤Ù¤­¤À¡£(¤³¤ì¤é¤Ï³Æ¡¹¥Ç¥Õ¥©¥ë¥È¤Ï$(INSTALL)¤Ç¤¢¤ë¤Ù ¤­¤À¡£) ¤½¤·¤Æ¡¢¤³¤ì¤é¤ÎÊÑ¿ô¤ò¼ÂºÝ¤Î¥¤¥ó¥¹¥È¡¼¥ë¤Î¥³¥Þ¥ó¥É¤È¤·¤Æ¡¢¤½¤ì¤¾ ¤ì¼Â¹Ô¥Õ¥¡¥¤¥ë¤È¼Â¹Ô¥Õ¥¡¥¤¥ë¤Ç¤Ê¤¤¤â¤Î¤ËÂФ·¤Æ»È¤¦¤Ù¤­¤À¡£¤³¤ì¤é¤ÎÊÑ¿ô¤Ï ¼¡¤Î¤è¤¦¤Ë»È¤¤¤Ê¤µ¤¤¡£

$(INSTALL_PROGRAM) foo $(bindir)/foo
$(INSTALL_DATA) libfoo.a $(libdir)/libfoo.a

¥¤¥ó¥¹¥È¡¼¥ë¤Î¥³¥Þ¥ó¥É¤ÎÆóÈÖÌܤΰú¿ô¤È¤·¤Æ¡¢¥Ç¥£¥ì¥¯¥È¥ê̾¤Ç¤Ï¤Ê¤¯¡¢¾ï¤Ë ¥Õ¥¡¥¤¥ë̾¤ò»È¤¤¤Ê¤µ¤¤¡£¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤ë¤½¤ì¤¾¤ì¤Î¥Õ¥¡¥¤¥ë¤ËÂФ·¤Æ¡¢ÊÌ¡¹ ¤Î¥³¥Þ¥ó¥É¤ò»È¤¤¤Ê¤µ¤¤¡£