Next: , Previous: Tests, Up: Top   [Contents][Index]


15 Makefile¤Î¥ê¥Ó¥ë¥É

Automake¤Ï¡¤Makefile¡¤configure¡¤¤½¤·¤Æ Makefile.in¤Î¤è¤¦¤Ê¤½¤Î¾¤ÎÇÉÀ¸¤¹¤ë¥Õ¥¡¥¤¥ë¤ò¡¤¼«Æ°Åª¤Ë¥ê¥Ó¥ë¥É ¤¹¤ë¥ë¡¼¥ë¤òÀ¸À®¤·¤Þ¤¹¡¥

configure.ac¤ÇAM_MAINTAINER_MODE¤ò»ÈÍѤ·¤Æ¤¤¤ë¾ì¹ç¡¤¤³¤ì ¤é¤Î¼«Æ°Åª¤Ê¥ê¥Ó¥ë¥É¤Î¥ë¡¼¥ë¤Ï¡¤´ÉÍý¼Ô¥â¡¼¥É¤Ç¤Î¤ßÍøÍѲÄǽ¤Ë¤Ê¤ê¤Þ¤¹¡¥

.m4¥Õ¥¡¥¤¥ë¤òõ¤¹¾ì½ê¤òÅÁ¤¨¤ë¤¿¤á¤Ë¡¤-I¤Î¤è¤¦¤Ê°ú¿ô¤òÍÑ ¤¤¤Æaclocal¼Â¹Ô¤¹¤ëɬÍפ¬¤¢¤ë¤³¤È¤â¤¢¤ê¤Þ¤¹¡¥make¤¬¼«Æ° Ū¤Ëaclocal¤ò¼Â¹Ô¤¹¤ë¤È¤­¤â¤¢¤ë¤Î¤Ç¡¤¤³¤ì¤é¤Î°ú¿ô¤ò»ØÄꤹ¤ëÊýË¡ ¤¬É¬Íפˤʤê¤Þ¤¹¡¥ACLOCAL_AMFLAGS¤òÄêµÁ¤¹¤ë¤³¤È¤Ç¡¤¤³¤¦¤¹¤ë¤³¤È ¤¬²Äǽ¤Ë¤Ê¤ê¤Þ¤¹¡¥¤³¤ì¤Ï¡¤aclocal¤ËÅϤ¹°ú¿ô¤ò¤½¤Î¤Þ¤ÞÊÝ»ý¤·¤Æ¤¤ ¤Þ¤¹¡¥¤³¤ÎÊÑ¿ô¤Ï¡¤ºÇ¾å°Ì¤ÎMakefile.am¤Ç¤Î¤ßÌò¤ËΩ¤Á¤Þ¤¹¡¥

Äɲäΰ͸À­¤òÍѤ¤¤Æconfigure¤äconfig.status¤ò¥ê¥Ó¥ë¥É¤¹ ¤ë¥ë¡¼¥ë¤òÊä­¤¹¤ë¤ÈÊØÍø¤Ê¤È¤­¤â¤¢¤ê¤Þ¤¹¡¥ÊÑ¿ô CONFIGURE_DEPENDENCIES¤ÈCONFIG_STATUS_DEPENDENCIES¤ò¤³¤ì ¤é¤ÎÄɲäΰ͸À­¤ò¥ê¥¹¥È¥¢¥Ã¥×¤¹¤ë¤¿¤á¤Ë»ÈÍѤ¹¤ë¤³¤È¤¬²Äǽ¤Ç¤¹¡¥¤³¤ì¤é ¤ÎÊÑ¿ô¤Ï¥Ä¥ê¡¼Æâ¤Î¤¹¤Ù¤Æ¤ÎMakefile¤ÇÄêµÁ¤µ¤ì¤ë¤Ù¤­¤Ê¤Î¤Ç(¤³¤ì¤é Æó¤Ä¤Î¥ê¥Ó¥ë¥É¥ë¡¼¥ë¤Ï¤¹¤Ù¤Æ¤Î¤â¤Î¤Ë½ÐÎϤµ¤ì¤ë¤¿¤á)¡¤ configure.ac¤ÇAC_SUBST¤¹¤ë¤Î¤¬°ÂÁ´¤Ç´Êñ¤Ç¤¹¡¥Î㤨¤Ð°Ê²¼ ¤Îʸ¤Ç¡¤version.sh¤¬Êѹ¹¤µ¤ì¤ë¤¿¤Óconfigure¤¬ºÆ¼Â¹Ô¤µ¤ì ¤Þ¤¹¡¥

AC_SUBST([CONFIG_STATUS_DEPENDENCIES], ['$(top_srcdir)/version.sh'])

¥Õ¥¡¥¤¥ë̾¤Ë$(top_srcdir)/¤¬¤¢¤ë¤³¤È¤ËÃí°Õ¤·¤Æ²¼¤µ¤¤¡¥¤³¤ÎÊÑ¿ô ¤Ï¤¹¤Ù¤Æ¤ÎMakefile¤Ç»ÈÍѤµ¤ì¤ë¤Î¤Ç¡¤¤½¤ÎÃͤϥӥë¥É¤Î³¬ÁØ¥ì¥Ù¥ë ¤òÃΤäƤª¤¯É¬Íפ¬¤¢¤ê¤Þ¤¹¡¥

CONFIG_STATUS_DEPENDENCIES¤ËÂФ¹¤ëCONFIGURE_DEPENDENCIES ¤ò¸í²ò¤·¤Ê¤¤¤è¤¦¤ËÃí°Õ¤·¤Æ²¼¤µ¤¤¡¥

CONFIGURE_DEPENDENCIES¤Ïconfigure¥ë¡¼¥ë¤Ë°Í¸À­¤òÄɲä·¡¤ ¤½¤ì¤Ïautoconf¤ò¼Â¹Ô¤¹¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡¥automake¤Ï´û¤Ë m4_include¤µ¤ì¤ë¥Õ¥¡¥¤¥ë¤òÄÉÀפ·¤Æ¤¤¤ë¤Î¤Ç¡¤¤³¤ÎÊÑ¿ô¤Ï¡¤ÌÇ¿¤Ë »ÈÍѤ¹¤Ù¤­¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡¥¤·¤«¤·¡¤m4_esyscmd¤ä¤½¤ì¤Ë»÷¤¿ÉûºîÍÑ ¤Î¤¢¤ë¿ä¾©¤µ¤ì¤Æ¤¤¤Ê¤¤¥Þ¥¯¥í¤òÍѤ¤¤¿¥È¥ê¥Ã¥­¡¼¤Ê¥²¡¼¥à¤ò³Ú¤·¤ó¤Ç¤¤¤ë¤È ¤­Ìò¤ËΩ¤Ä¤Ï¤º¤Ç¤¹¡¥

CONFIG_STATUS_DEPENDENCIES¤Ïconfig.status¥ë¡¼¥ë¤Ë°Í¸À­ ¤òÄɲä·¡¤¤½¤ì¤Ïconfigure¤ò¼Â¹Ô¤¹¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡¥¤³¤Î¤¿¤á¡¤¤³ ¤ÎÊÑ¿ô¤È¤·¤Æ¡¤configure¤Î¼Â¹Ô¤ËÉûºîÍѤȤ·¤ÆÆÉ¤ß¹þ¤Þ¤ì¤ë²ÄǽÀ­¤¬¤Ê¤¤¤è ¤¦¤Ë¡¤É¸½àŪ¤Ç¤Ï¤Ê¤¤¥½¡¼¥¹¤ò»ý¤Á¹þ¤à¤Ù¤­¤Ç¡¤Î㤨¤Ð¾åµ­¤ÎÎã¤Î version.sh¤Ê¤É¤Ç¤¹¡¥

version.sh¥¹¥¯¥ê¥×¥È¤Ë¤Ä¤¤¤Æ¸À¤ï¤»¤Æ¤â¤é¤¦¤È¡¤²æ¡¹¤Ïº£Æü¡¤¤½¤ì ¤ò¿ä¾©¤·¤Æ¤¤¤Þ¤»¤ó¡¥¤½¤ì¤é¤Ï¼ç¤Ë¡¤¥Ñ¥Ã¥±¡¼¥¸¤Î¥Ð¡¼¥¸¥ç¥ó¤ò¥¹¥¯¥ê¥×¥È¤Ç ¼«Æ°Åª¤Ë¹¹¿·¤¹¤ë¤È¤­»ÈÍѤµ¤ì¤Æ¤¤¤Þ¤·¤¿(Î㤨¤Ð¡¤ËèÆü¤Î¥Ó¥ë¥É)¡¥¸Å¤¤·Á¼° ¤Îconfigure.ac¤Ï°Ê²¼¤Î¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤â¤Î¤â¤¢¤ê¤Þ¤·¤¿¡¥

AC_INIT
. $srcdir/version.sh
AM_INIT_AUTOMAKE([name], $VERSION_NUMBER)
…

¤³¤³¤Ç¡¤version.sh¤Ï¥·¥§¥ë¤ÎÃÇÊҤǡ¤VERSION_NUMBER¤òÀßÄê ¤·¤Þ¤¹¡¥¤³¤ÎÎã¤ÎÌäÂê¤Ï¡¤automake¤¬°Í¸À­¤òÄÉÀפǤ­¤Ê¤¤¤³¤È¤È (version.sh¤òCONFIG_STATUS_DEPENDENCIES¤Ë¥ê¥¹¥È¥¢¥Ã¥×¤·¡¤ ¤³¤Î¥Õ¥¡¥¤¥ë¤ò¥æ¡¼¥¶¤ËÇÛÉÛ¤¹¤ë)¡¤¸Å¤¤·Á¼°¤ÎAC_INIT¤È AM_INIT_AUTOMAKE¤ò»ÈÍѤ·¤Æ¤¤¤ë¤³¤È¤Ç¤¹¡¥¿·¤·¤¤¹½Ê¸¤Ë¹¹¿·¤¹¤ë¤Î ¤Ï¡¤AC_INIT¤Î°ú¿ô¤Ç¥·¥§¥ëÊÑ¿ô¤¬ÍøÍѤǤ­¤Ê¤¤¤Î¤Ç¡¤ÁÇľ¤ÊÊýË¡¤Ç¤Ï ¤¢¤ê¤Þ¤»¤ó¡¥²æ¡¹¤Ïversion.sh¤òconfigure.ac¤Ç¥¤¥ó¥¯¥ë¡¼¥É ¤µ¤ì¤ëM4¥Õ¥¡¥¤¥ë¤ÇÃÖ´¹¤¹¤ë¤³¤È¤ò¿ä¾©¤·¤Þ¤¹¡¥

m4_include([version.m4])
AC_INIT([name], VERSION_NUMBER)
AM_INIT_AUTOMAKE
…

¤³¤³¤Ç¡¤version.m4¤Ë¤Ïm4_define([VERSION_NUMBER], [1.2]) ¤Î¤è¤¦¤Ê¤â¤Î¤ò´Þ¤á¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡¥¤³¤ÎÆóÈÖÌܤηÁ¼°¤ÎÍøÅÀ¤Ï¡¤ automake¤¬¥ê¥Ó¥ë¥É¥ë¡¼¥ë¤òÄêµÁ¤¹¤ë¤È¤­°Í¸À­¤ËÃí°Õ¤·¡¤¥Õ¥¡¥¤¥ë ¤â¼«Æ°Åª¤ËÇÛÉÛ¤µ¤ì¤ë¤³¤È¤Ç¤¹¡¥ÉÔÊØ¤ÊÅÀ¤Ï¡¤¥Ð¡¼¥¸¥ç¥ó¥Ê¥ó¥Ð¡¼¤¬¾å¾º¤¹¤ë ¤¿¤Ó¤Ëautoconf¤¬ºÆ¼Â¹Ô¤µ¤ì¤ë¤³¤È¤Ç¡¤°ÊÁ°¤ÎÀßÄê¤Ç¤Ï¡¤ configure¤À¤±¤¬ºÆ¼Â¹Ô¤µ¤ì¤Æ¤¤¤Þ¤·¤¿¡¥