¼ø¶È»ñÎÁ/11

make

make ¤È¤Ï¡¤Makefile ¤È¸Æ¤Ð¤ì¤ë¥ì¥·¥Ô¥Õ¥¡¥¤¥ë¤Ë½ñ¤«¤ì¤¿¥ì¥·¥Ô¤Ë±è¤Ã¤Æºî¶È¤ò¼«Æ°Åª¤Ë¤·¤Æ¤¯¤ì¤ë¥Ä¡¼¥ë¤Ç¤¢¤ë*1¡¥ ÆÃħ¤È¤·¤Æ¤Ï¡¤



  • ¥ì¥·¥Ô¤Ê¤Î¤Ç¡¤½ñ¤­Êý¤¬Ã±½ã¡¥»È¤¤¤Þ¤ï¤·¤·¤ä¤¹¤¤¡¥
  • ¡Ö¥â¥Î¡×¤Î°Í¸´Ø·¸¤È¡¤¤½¤Î¶É½êŪ¤Ê¼ê½ç¤À¤±½ñ¤±¤ÐÎɤ¤¡¥¤È¤Æ¤âñ½ã¡¥
  • ɬÍפʺî¶È¼ê½ç¤ò¼«Æ°Åª¤ËȽÃǤ·¤Æ¤¯¤ì¤ë¡¥ ¿Í´Ö¤¬¼ê½ç¤Î½çÈÖ¤òµ¤¤Ë¤·¤Ê¤¯¤ÆÎɤ¤¡¥
  • ºî¶È¤ò¤ä¤êľ¤¹ºÝ¡¤É¬Íפʺî¶È¡Ö¤À¤±¡×¤ä¤Ã¤Æ¤¯¤ì¤ë¡¥ ¥·¥§¥ë¥¹¥¯¥ê¥×¥È¤À¤ÈÁêÅöºî¤ê¤³¤Þ¤Ê¤¤¤È¡¤Æ¬¤«¤é¤ä¤êľ¤·¤Ë¤Ê¤ë.¤½¤ì¤ËÈæ³Ó¤¹¤ë¤ÈÂçÊÑÊØÍø¡¥
  • ºî¶È¤ÎÅÓÃæ¤Ç¥¨¥é¡¼¤¬¤¢¤Ã¤Æ»ß¤Þ¤Ã¤¿¤È¤¹¤ë¡¥¤½¤Î²Õ½ê¤À¤±¼êºî¶È¤ÇÂбþ¤·¤¿¾ì¹ç¡¤¤â¤¦°ìÅÙ make ¤¹¤ë¤È¡¤Â³¤­¤«¤é¤­¤Á¤ó¤È¤ä¤Ã¤Æ¤¯¤ì¤ë¡¥
  • ¤è¤ê´Êñ¤Êµ­½Ò¤ò¤¹¤ë¤¿¤á¤Î¹âÅÙ¤Êʸˡ¤â¤¢¤ê¡¤½¬½Ï¤¹¤ì¤Ð¤¹¤ë¤Û¤É´Êñ¤Ë½ñ¤±¤ë¡¥

¤È¤¤¤¦¤È¤³¤í¤¬µó¤²¤é¤ì¤ë¡¥ ¸«¤Æ¤ï¤«¤ë¤è¤¦¤Ë¡¤ÂçÊѤËÊØÍø¤Ê¤â¤Î¤Ç¤¢¤ë¡¥ º£²ó¤Ï¤³¤Î make ¤Ë¤Ä¤¤¤Æ³Ø¤Ü¤¦¡¥

¤Ê¤ª¡¤¼«Æ°Åª¤Êºî¶È¤ò¤¹¤ë°Ù¤Î¥Ä¡¼¥ë¤È¤·¤Æ¾¤Ë¥·¥§¥ë¥¹¥¯¥ê¥×¥È¤Ê¤É¤â¤¢¤ë¤¬¡¤ ÅÓÃæ¤ÇÄûÀµ¤ä¤ä¤êľ¤·¤¬È¯À¸¤¹¤ë¤è¤¦¤Ê¾ì¹ç(¥×¥í¥°¥é¥à³«È¯¤Ê¤É)¤Ï make ¤ÎÊý¤¬ÌÀ¤é¤«¤ËÊØÍø¤Ç¤¢¤ë¡¥



Reference: make »²¹Í»ñÎÁ



  • JNorth_arrow-right-sm.png GNU Make ¡Ä µã¤¯»Ò¤âÌÛ¤ë GNU ¤Î Make. ¤Þ¤¢¡¤¤³¤³¤ò¾ðÊó¤Îµ¯ÅÀ¤È¤·¤Æ¤ª¤±¤Ð´Ö°ã¤¤¤Ê¤¤¡¥ºÇ¿·¥Ð¡¼¥¸¥ç¥ó¤Ï 3.82 ¤«? ¤Þ¤¢¡¤make ¤ò¼«Ê¬¤Ç¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ëɬÍפˤʤ뤳¤È¤Ï¤Þ¤º¤Ê¤¤¤À¤í¤¦¡¥



  • JNorth_arrow-right-sm.png GNU Make ¥Þ¥Ë¥å¥¢¥ë¤ÎÆüËܸìÌõ ¡Ä GNU Make ¤Î¥Þ¥Ë¥å¥¢¥ë¤òÆüËܸì¤ËÌõ¤µ¤ì¤¿Êý(¤¤¤Î¤Þ¤¿ ¤ß¤Ä¤Ò¤íÍÍ)¤¬µï¤ë¡¥¥é¥¤¥»¥ó¥¹¤Ï GPL ¤À¡¥´¶¼Õ¤·¤Æ¡¤¤¢¤ê¤¬¤¿¤¯Æɤޤ»¤Æ¤â¤é¤ª¤¦¡¥



¾¤Ë¤â¡¤web ¾å¤Ë¤Ï make ¤Ë¤Ä¤¤¤Æ½ñ¤¤¤¿¤â¤Î¤¬Âô»³¤¢¤ë¡¥ ¼«Ê¬¤Ë¤¢¤Ã¤¿¤â¤Î¤òõ¤·¤Æ¤ß¤è¤¦¡¥



101 of make: make ¤Î´ðÁÃ

Make salad: ¥µ¥é¥À¤ËÎ㤨¤ë: Makefile

¤Þ¤º¤ÏÎ㤨¤«¤éÆþ¤í¤¦¡¥ make ¤¬ÎÁÍý¿Í¤Ç¡¤Makefile ¤Ï¤½¤Î¥ì¥·¥Ô¤ËÁêÅö¤¹¤ë¤È¹Í¤¨¤Æ¡¤¥ì¥·¥Ô¤ò½ñ¤¯¤³¤È¤ò¹Í¤¨¤ë¡¥ ºÇ½é¤Ë¡¤´Êñ¤Ê¥µ¥é¥À¤òºî¤ë¥ì¥·¥Ô¤ò¹Í¤¨¤Æ¤ß¤è¤¦¡¥ ¤¿¤À¤·¡¤½ñ¤­Êý¤Ï make ¤Îήµ·¤Ç¡¤¤Ç¤¢¤ë¡¥


ºÇ½é¤Ë¡¤´Êñ¤Ê¥µ¥é¥À¤òºî¤ë¡¤¤È¤¤¤¦ºî¶È¤ò¡¤


  • ´°À®ÉÊ¡¤ÅÓÃæ·Ð²áÉÊ¡¤ºàÎÁ¡¤¤È¤¤¤Ã¤¿¡Ö¥â¥Î¡×¤Î°Í¸´Ø·¸
  • ¤È¡¤¤½¤ÎÅÓÃæ·Ð²á¤Ç¤ÎÁàºî

¤Ë¤ï¤±¤ÆÃúÇ«¤Ë¹Í¤¨¤Æ¤ß¤è¤¦¡¥ ¤Þ¤º¤Ï°Í¸´Ø·¸¤À¤±½ñ¤¤¤Æ¤ß¤ë¡¥



¢£ ¥µ¥é¥ÀºîÀ®»þ¤Î¡Ö¥â¥Î¡×¤Î°Í¸´Ø·¸ ¢£

¥¿¡¼¥²¥Ã¥ÈÉʤ½¤Î¥¿¡¼¥²¥Ã¥È¤ËɬÍפÊÉÊ
¥µ¥é¥À´°À®ÉÊ¡¦Å¬ÅÙ¤ÊÂ礭¤µ¤ËÀÚ¤é¤ì¤¿À¶·é¤«¤Ä¿·Á¯¤ÊÌîºÚ
¡¦¥É¥ì¥Ã¥·¥ó¥°
¡¦åºÎï¤Ê´ï
ŬÅÙ¤ÊÂ礭¤µ¤ËÀÚ¤é¤ì¤¿
À¶·é¤«¤Ä¿·Á¯¤ÊÌîºÚ
¡¦À¶·é¤«¤Ä¿·Á¯¤ÊÌîºÚ
À¶·é¤«¤Ä¿·Á¯¤ÊÌîºÚ¡¦¿·Á¯¤ÊÌîºÚ
¥É¥ì¥Ã¥·¥ó¥°¡¦¿Ý
¡¦¥µ¥é¥ÀÌý
¡¦¾ßÌý
¡¦±ö
¡¦¥³¥·¥ç¥¦



¼¡¤Ë¡¤¤³¤Î°Í¸´Ø·¸¤Îº¸¤Î¡Ö¥¿¡¼¥²¥Ã¥ÈÉʡפòºîÀ®¤¹¤ë¤¿¤á¤Ë¤ä¤ë¡Öºî¶È¡×¤ò½ñ¤­Æþ¤ì¤Æ¤ß¤è¤¦¡¥



¢£ ¥µ¥é¥ÀºîÀ®»þ¤Ëºî¤Ã¤¿¤êÍøÍѤ·¤¿¤ê¤¹¤ë¡Ö¥â¥Î¡×¤Î°Í¸´Ø·¸¤Èºî¶È ¢£

¥¿¡¼¥²¥Ã¥ÈÉʤ½¤Î¥¿¡¼¥²¥Ã¥È¤ËɬÍפÊÉÊ
¥µ¥é¥À´°À®ÉÊ¡¦Å¬ÅÙ¤ÊÂ礭¤µ¤ËÀÚ¤é¤ì¤¿À¶·é¤«¤Ä¿·Á¯¤ÊÌîºÚ
¡¦¥É¥ì¥Ã¥·¥ó¥°
¡¦åºÎï¤Ê´ï
ɬÍ×Éʤκǽé¤òºÇ¸å¤ËÆþ¤ì¡¤ÆóÈÖÌܤò¤Õ¤ê¤«¤±¤ë
ŬÅÙ¤ÊÂ礭¤µ¤ËÀÚ¤é¤ì¤¿
À¶·é¤«¤Ä¿·Á¯¤ÊÌîºÚ
¡¦À¶·é¤«¤Ä¿·Á¯¤ÊÌîºÚ
ɬÍ×ÉʤòŬÅö¤Ë¥«¥Ã¥È
À¶·é¤«¤Ä¿·Á¯¤ÊÌîºÚ¡¦¿·Á¯¤ÊÌîºÚ
ɬÍ×ÉʤòÀö¤¦
¥É¥ì¥Ã¥·¥ó¥°¡¦¿Ý
¡¦¥µ¥é¥ÀÌý
¡¦¾ßÌý
¡¦±ö
¡¦¥³¥·¥ç¥¦
ɬÍ×ÉʤòŬÎÌ¡¤Å¬Å٤˺®¤¼¤ë



¤³¤Îɽ¤Ë½¾¤Ã¤Æ¡¤°ìÈֺǽé¤Î¥¿¡¼¥²¥Ã¥ÈÉʤˤĤ¤¤Æ ¥¿¡¼¥²¥Ã¥ÈÉʤ¬¤â¤·¤â̵¤±¤ì¤Ð¡Öºî¶È¡×¤Çºî¤ê¡¤¤½¤Î»þ¤ËɬÍפÊÉʤ¬¤Ê¤±¤ì¤Ð¤½¤ì¤¬¥¿¡¼¥²¥Ã¥ÈÉʤȤ·¤Æ½ñ¤«¤ì¤Æ¤¤¤ëÉôʬ¤òÆɤó¤Ç°Ê²¼Æ±ÍͤˡĤȤ¤¤¦¤³¤È¤òºÆµ¢Åª¤Ë·«¤êÊÖ¤»¤Ð¥µ¥é¥À¤¬´°À®¤¹¤ë¤³¤È¤Ë¤Ê¤ë¡¥ ÃúÇ«¤Ë¹Í¤¨¤ì¤Ðή¤ì¤¬¤ï¤«¤ë¤À¤í¤¦¡¥ ¤è¤Ã¤Æ¡¤¤³¤ì¤Ç make ή¤Î¥ì¥·¥Ô¤Î´°À®¤Ç¤¢¤ë¡¥ ¤·¤«¤â¼ÂºÝ¤Îºî¶È¤Ï make ¤È¤¤¤¦ÎÁÍý¿Í¤¬¤ä¤Ã¤Æ¤¯¤ì¤ë¤Î¤À¤«¤é¡¤¤ï¤ì¤ï¤ì¤Î»Å»ö ¤Ï¤³¤Î¥ì¥·¥Ô¤ò½ñ¤¯¤À¤±¤Ç½ªÎ»¤Ê¤Î¤À¡¥


¤µ¤Æ¡¤¼¡¤Ë make ¤Îʸˡ¤Ç¤³¤Î¥ì¥·¥Ô¤ò½ñ¤¯¤³¤È¤ò¹Í¤¨¤è¤¦¡¥ Ä̾ï¤Ï Makefile ¤È¤¤¤¦Ì¾Á°¤Î¥Õ¥¡¥¤¥ë¤Ë½ñ¤­¤³¤à¡¥ ¤½¤·¤Æ¤½¤ÎÃæ¿È¤Ï¡¤ make ¤Îʸˡ¤Ë±è¤¦¤Ê¤é¤Ð°Ê²¼¤Î¤è¤¦¤Ë¤Ê¤ë¡¥


¢£ ¾å¤Î¥ì¥·¥Ô¤ò make ¤Îʸˡ¤Ë±è¤Ã¤Æ Makefile ¤È¤·¤Æ½ñ¤¯¤È¼¡¤Î¤è¤¦¤Ë¤Ê¤ë ¢£

¥µ¥é¥À´°À®ÉÊ¡§␣ŬÀÚÀ¶·é¿·Á¯ÌîºÚ␣¥É¥ì¥Ã¥·¥ó¥°␣åºÎï¤Ê´ï

____␉____ɬÍ×Éʤκǽé¤òºÇ¸å¤ËÆþ¤ì¡¤ÆóÈÖÌܤò¤Õ¤ê¤«¤±¤ë


ŬÀÚÀ¶·é¿·Á¯ÌîºÚ:␣À¶·é¿·Á¯ÌîºÚ

____␉____ɬÍ×ÉʤòŬÅö¤Ë¥«¥Ã¥È


À¶·é¿·Á¯ÌîºÚ:␣¿·Á¯ÌîºÚ

____␉____ ɬÍ×ÉʤòÀö¤¦


¥É¥ì¥Ã¥·¥ó¥°:␣¿Ý␣¥µ¥é¥ÀÌý␣¾ßÌý␣±ö␣¥³¥·¥ç¥¦

____␉____ ɬÍ×ÉʤòŬÎÌ¡¤Å¬Å٤˺®¤¼¤ë

  * ¤¿¤À¤·¡¤ ____␉____ ¤Ï, ¥¿¥Ö(tab ¥­¡¼¤ò°ì²ó²¡¤¹¤ÈÆþÎϤǤ­¤ë)¤Î¤³¤È¤Ç¤¢¤ë.



¤³¤³¤ÇɬÍפÊʸˡ¤Ï¤¿¤Ã¤¿2¤Ä¤Ç¡¤

°Í¸´Ø·¸¤Ï ¡Ö¥¿¡¼¥²¥Ã¥ÈÉÊ : ɬÍ×ÉÊ¡× ¤È½ñ¤¯

ºî¶È¤Ï¼¡¹Ô¤Ë ¡Ö____␉____ºî¶È¡× ¤È½ñ¤¯



¤À¤±¤Ç¤¢¤ë¡¥ ´Êñ¤À¤í¤¦¡ª

¤µ¤Æ¡¤¤³¤¦¤ä¤Ã¤Æ¥ì¥·¥Ô¤¹¤Ê¤ï¤Á Makefile ¤¬´°À®¤·¤¿¤é¡¤¤¢¤È¤Ï¡¤

make

¤ÈÂǤĤÀ¤±¤Ç(ºàÎÁ¤¬Â·¤Ã¤Æ¤¤¤ë¤Ê¤é¤Ð)¡¤make ¥³¥Þ¥ó¥É¤¬¤³¤Î¥ì¥·¥Ô¤Ë¤½¤Ã¤Æºî¶È¤ò¤·¤Æ¡¤¥µ¥é¥À¤¬´°À®¤¹¤ë¤È¤¤¤¦¤ï¤±¤Ç¤¢¤ë¡¥



What will happen if you change something and "make" again? ¥µ¥é¥À¤ËÎ㤨¤ë: ÅÓÃ椫¤é¤ä¤êľ¤¹¤È¤·¤¿¤é?

¤µ¤Æ¡¤¾å¤Î¥ì¥·¥Ô¤ò½ñ¤­¡¤ÎÁÍý¿Í¤Ë¥µ¥é¥À¤òºî¤Ã¤Æ¤â¤é¤Ã¤¿¸å¤Ç¡¤ ¿Ý¤¬¸Å¤«¤Ã¤¿¤³¤È¤Ëµ¤¤Å¤¤¤Æ¿·¤·¤¤¿Ý¤Ç¥µ¥é¥À¤òºî¤êľ¤·¤¿¤¤¤È»×¤Ã¤¿¤È¤·¤è¤¦¡¥ ¤¿¤À¤·¡¤ÅÓÃæ¤Ç¤Ç¤­¤¿ÉʤϽ¼Ê¬¤Ë;¤Ã¤Æ¤¤¤ë¤È¤·¤Æ¤ª¤³¤¦*2¡¥

¤¹¤ë¤È¤³¤Î¾ì¹ç¡¤É¬Íפʺî¶È¤Ï

  1. ¥É¥ì¥Ã¥·¥ó¥°¤ÎºîÀ®
  2. ¥µ¥é¥À¤Î´°À®(ŬÀÚÀ¶·é¿·Á¯ÌîºÚ¤Ï¤µ¤Ã¤­ºî¤Ã¤Æ;¤Ã¤Æ¤¤¤ë¤â¤Î¤ò»È¤¨¤ë¤Î¤Ç)

¤È¤¤¤¦¡¤¤¿¤Ã¤¿2¹ÔÄø¤ÇÎɤ¤¡¥ ¤·¤«¤·¡¤¤³¤Î¡Ö2¹ÔÄø¤ÇÎɤ¤¡×¤È¤¤¤¦¶ñÂÎŪ¤Ê»ö¼Â¤òÎÁÍý¿Í(make)¤Ë¤É¤¦¤ä¤Ã¤Æ»Ø¼¨¤¹¤ì¤Ð¤è¤¤¤«? ¼Â¤Ï¤³¤Î»Ø¼¨¤Ï¶ñÂÎŪ¤ËÅÁ¤¨¤Ê¤¯¤Æ¤è¤¤¤Î¤À¡¥ make ¤¬¡Ö¥â¥Î¡×¤ÎÀ½Â¤»þ´Ö¤òÈæ³Ó¤·¤Æ¾¡¼ê¤ËȽÃǤ·¤Æ¤¯¤ì¤ë¤Î¤Ç¤¢¤ë¡¥

¤Ä¤Þ¤ê¡¤¿Ý¤ò¼è¤êÂؤ¨¤¿¤¢¤È¤Ç¤â¤¦°ìÅÙ

make

¤ÈÂǤĤÀ¤±¤Ç¡¤¾¡¼ê¤Ë¤³¤Î2¹ÔÄø¤À¤±¤ä¤êľ¤·¤Æ¤¯¤ì¤ë¤Î¤Ç¤¢¤ë¡¥ ¤³¤Î¤è¤¦¤Ë¡¤



make ¤ÈÂǤĤÀ¤±¤ÇɬÍפʺî¶È¤À¤±¤ä¤êľ¤·¤Æ¤¯¤ì¤ë!

¤Î¤Ç¤¢¤ë. ¤³¤ì¤¬ make ¤Î¤È¤Æ¤âÊØÍø¤ÊÅÀ¤Ç¤¢¤ë¡¥



The simplest example: ñ½ã¤ÊÎã

¤Ç¤Ï¡¤¥×¥í¥°¥é¥à¤Ç¼ÂºÝ¤Ë¤ä¤Ã¤Æ¤ß¤è¤¦¡¥ ºÇ½é¤Ï¤´¤¯´Êñ¤Ë¡¤¥×¥í¥°¥é¥à¤ò¥³¥ó¥Ñ¥¤¥ë¤·¤Æ¡¤¼Â¹Ô¤¹¤ë¤È¤¤¤¦Ã±½ã¤ÊÆóÃʳ¬¤Îºî¶È¤ò¤µ¤»¤Æ¤ß¤è¤¦¡¥



notes.png ¼Â½¬: °Ê²¼¤Î¼ê½ç¤Ë½¾¤¤¡¤Å¬Åö¤Ê¼Â½¬Íѥǥ£¥ì¥¯¥È¥ê¤Ç make ¤òÆ°¤«¤·¤Æ¤ß¤ë¡¥
warning.png ¤¿¤À¤·¡¤¤¿¤À¤ä¤ë¤À¤±¤Ç¤Ï¤Ê¤¯¡¤Á´ÂΤÎή¤ì¤òÍý²ò¤·¤Ê¤¬¤é¤ä¤í¤¦¡¥¥¿¥¤¥×¤¹¤ë¤À¤±¤Ç¤Ï°ÕÌ£¤¬¥Ê¥¤¤¾¡¥

  1. ¤Þ¤º¡¤f_sin.c ¤È¤¤¤¦Ì¾Á°¤Î¥Õ¥¡¥¤¥ë¤òºî¤ê¡¤¼¡¤ÎÃæ¿È¤ò½ñ¤­¹þ¤ó¤Ç¤ª¤¯¡¥
     #include <stdio.h>
     #include <math.h>
     main () {
       double x,dx;
       dx = 1.0/100;
       x = 0.0;
       for ( x = 0.0; x <= 0.5+dx; x += dx) {
         printf("%6.3f %6.3f\n", x, sin(x));
         }
       return 0;
     }
    warning.png ²¿¤ò¤¹¤ë¥×¥í¥°¥é¥à¤«, Æɲò¤·¤Æ¤ª¤³¤¦¡¥

  2. Ʊ¤¸¥Ç¥£¥ì¥¯¥È¥ê¤Ë Makefile ¤È¤¤¤¦Ì¾Á°¤Î¥Õ¥¡¥¤¥ë¤òºî¤ê¡¤¼¡¤ÎÃæ¿È¤ò½ñ¤­¹þ¤ó¤Ç¤ª¤¯¡¥

    f_sin.dat:␣f_sin.exe

    ____␉____ \rm␣-f␣f_sin.dat

    ____␉____ ./f_sin.exe␣>␣f_sin.dat


    f_sin.exe:␣f_sin.c

    ____␉____ gcc␣-lm␣f_sin.c␣-o␣f_sin.exe

    warning.png 2, 3, 6¹ÔÌܤϡ֥¿¥Ö¡×+¡Öºî¶È¥³¥Þ¥ó¥É¡×¤Î·Á¼°¤Ç½ñ¤¯¤³¤È¡ª¡ª¡ª¤³¤Î·Á¼°¤Ç¤Ê¤¤¤È¤Þ¤º¤¤*3¡¥
    warning.png ¥¿¥Ö¤òÌÀµ­¤¹¤ë¤¿¤á¤Ë¡¤¤¤¤Ä¤â¤È¾¯¤·°ã¤¦É½µ­¤ò¤·¤Æ¤¤¤ë. ¥³¥Ô¥Ú¤Ç¤­¤Ê¤¤¤Î¤Ç¼«ÎϤÇÆþÎϤ·¤è¤¦¡¥
    warning.png ²¿¤ò¤¹¤ë¥ì¥·¥Ô¤«, Æɤó¤Ç³Îǧ¤·¤Æ¤ª¤³¤¦¡¥

  3. make ¤·¤Æ¤ß¤ë¡¥

    make



  4. ÌäÂ꤬¤Ê¤±¤ì¤Ð¡¤f_sin.c ¤È¤¤¤¦¥×¥í¥°¥é¥à¤¬¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¡¤¼Â¹Ô¤µ¤ì¡¤¤½¤Î·ë²Ì¤Î f_sin.dat ¤È¤¤¤¦¥Ç¡¼¥¿¥Õ¥¡¥¤¥ë¤¬¤Ç¤­¤Æ¤¤¤ë¤Ï¤º¤À¡¥ ¤½¤ÎÆâÍƤò¡¤Î㤨¤Ð¼¡¤Î¤è¤¦¤Ë¤·¤ÆÇÁ¤¤¤Æ¤ß¤è¤¦¡¥

    less␣f_sin.dat



  5. ·ë²Ì¤Î¥Ç¡¼¥¿¥Õ¥¡¥¤¥ë¤ò¾Ã¤·¤Æ¤ß¤è¤¦¡¥

    rm␣f_sin.dat



  6. ºÆ¤Ó make ¤·¤Æ¤ß¤ë¡¥
    warning.png ¤³¤Î»þ¡¤¤É¤Îºî¶È¤¬¹Ô¤ï¤ì¤ë¤«¡¤Ãí°Õ¿¼¤¯¸«¤Æ¤ª¤³¤¦¡¥Àè¤È°Û¤Ê¤ë¤Ï¤º¤À¡¥

    make



  7. ºÆ¤Ó¼Â¹Ô·ë²Ì¤¬¤Ç¤­¤Æ¤¤¤ë¤Ï¤º¤Ê¤Î¤Ç³Îǧ¤·¤è¤¦¡¥

    less␣f_sin.dat



  8. º£ÅÙ¤Ï¥×¥í¥°¥é¥à¤ò½¤Àµ¤·¤Æ¤ß¤è¤¦¡¥ ¶ñÂÎŪ¤Ë¤Ï¡¤f_sin.c ¤Î for ¤Î¹Ô¤ò
       for ( x = 0.0; x <= 1.0+dx; x += dx) {
    ¤È½¤Àµ¤·¤Æ¤ß¤ë(0.5 ¤À¤Ã¤¿¤È¤³¤í¤ò 1.0 ¤Ë½¤Àµ¤¹¤ë)¡¥

  9. ºÆ¤Ó make ¤·¤Æ¤ß¤ë¡¥

    make



  10. º£Å٤μ¹Էë²Ì¤Ï°Û¤Ê¤ë¤Ï¤º¤À¡¥¸«¤Æ¤ß¤è¤¦¡¥

    less␣f_sin.dat


warning.png ¤¤¤í¤ó¤ÊÊѹ¹¤ò¤·¤Æ¤â¡¤¤¤¤Ä¤Ç¤â make ¥³¥Þ¥ó¥É¤À¤±¤ÇºÑ¤à¡ª ÊØÍø¤Ê¤³¤È¤Ëµ¤ÉÕ¤³¤¦¡¥



Simple example: ¤Á¤ç¤Ã¤ÈÊ£»¨¤Ë¤Ê¤Ã¤¿Îã

¼¡¤Ë¡¤º£¤ÎÎã¤ò¤Á¤ç¤Ã¤È¤À¤±½¤Àµ¤·¤Æ¡¤¥×¥í¥°¥é¥à¤ò¥³¥ó¥Ñ¥¤¥ë¤·¤Æ¡¤¼Â¹Ô¤·¤Æ¡¤¤µ¤é¤Ë¤½¤Î¥Ç¡¼¥¿¥Õ¥¡¥¤¥ë¤«¤é¥°¥é¥Õ¤òºîÀ®¤¹¤ë¤È¤¤¤¦¡¤»°Ãʳ¬¤Îºî¶È¤ò¤µ¤»¤Æ¤ß¤è¤¦¡¥



notes.png ¼Â½¬: Àè¤Î³¤­¤Î·Á¤Ë¤Ê¤ë¡¥Â³¤­¤È¤·¤Æ¡¤°Ê²¼¤Î¤è¤¦¤Ë¤ä¤Ã¤Æ¤ß¤è¤¦¡¥

  1. Àè¤ÈƱ¤¸¥Ç¥£¥ì¥¯¥È¥ê¤Ë sin2eps.gpl ¤È¤¤¤¦Ì¾Á°¤Î¥Õ¥¡¥¤¥ë¤òºî¤ê¡¤¼¡¤ÎÃæ¿È¤ò½ñ¤­¹þ¤ó¤Ç¤ª¤¯¡¥
     set output "f_sin.eps"
     set term postscript
     plot "f_sin.dat" w l

    warning.png ºÇ¸å¤Î¹Ô¤ÎºÇ¸å¤Îʸ»ú¤Ï l(¾®Ê¸»ú¤Î¥¨¥ë)¤À¡¥
    warning.png ºÇ¸å¤Î¹Ô¤ò¤­¤Ã¤Á¤ê²þ¹Ô¤·¤Æ¤ª¤¯¤³¤È¤ò˺¤ì¤Ê¤¤¤è¤¦¤Ë¡ª

  2. Makefile ¤ÎÃæ¿È¤ò°Ê²¼¤Î¤è¤¦¤Ë½¤Àµ¤¹¤ë(ÀèƬ¤Ë»°¹Ô¤¬²Ã¤ï¤ë)¡¥

    f_sin.eps:␣f_sin.dat

    ____␉____ gnuplot␣"sin2eps.gpl"


    f_sin.dat:␣f_sin.exe

    ____␉____ \rm␣-f␣f_sin.dat

    ____␉____ ./f_sin.exe␣>␣f_sin.dat


    f_sin.exe:␣f_sin.c

    ____␉____ gcc␣-lm␣f_sin.c␣-o␣f_sin.exe

    warning.png ¡Öºî¶È¡×¤Î¹Ô¤Ï¡Ö¥¿¥Ö¡×+¥³¥Þ¥ó¥É¤Ç¤¢¤ë¤³¤È¤ò˺¤ì¤º¤Ë¡ª
    warning.png ¤³¤³¤â¡¤¥¿¥Ö¤òÌÀµ­¤¹¤ë¤¿¤á¤Ë¤¤¤Ä¤â¤È¾¯¤·°ã¤¦É½µ­¤ò¤·¤Æ¤¤¤ë. ¥³¥Ô¥Ú¤Ç¤­¤Ê¤¤¤Î¤Ç¼«ÎϤÇÆþÎϤ·¤è¤¦¡¥
    warning.png ²¿¤ò¤¹¤ë¥ì¥·¥Ô¤Ë¤Ê¤Ã¤¿¤«, ¤³¤ì¤âÆɤó¤Ç³Îǧ¤·¤Æ¤ª¤³¤¦¡¥

  3. make ¤·¤Æ¤ß¤ë¡¥

    make



  4. ÌäÂ꤬¤Ê¤±¤ì¤Ð¡¤f_sin.eps ¤È¤¤¤¦²èÁü¥Õ¥¡¥¤¥ë¤¬¤Ç¤­¤Æ¤¤¤ë¤Î¤Ç¡¤¸«¤Æ¤ß¤è¤¦. GUI ¤Ç¤½¤Î¥Õ¥¡¥¤¥ë¤ò¥Þ¥¦¥¹¤Ç¥À¥Ö¥ë¥¯¥ê¥Ã¥¯¤¹¤ë¤â¤è¤·¡¤¼¡¤Î¥³¥Þ¥ó¥É¤Ç¤â¤¤¤±¤ë¤À¤í¤¦¡¥

    gv␣f_sin.eps␣&

warning.png ¤³¤Î¥³¥Þ¥ó¥É̾¤Ï´Ä¶­¤Ë¤è¤Ã¤Æ¤Ï¡¤gv ¤Ç¤Ï¤Ê¤¯¡¤ggv ¤«¤â¤·¤ì¤Ê¤¤¡¥ gv ¤Ç¤Ï¥À¥á¤Ê¤È¤­¤Ï»î¤·¤Æ¤ß¤è¤¦¡¥


¤³¤Î¤è¤¦¤Ë¡¤ºî¶È¤¬²¿Ãʳ¬¤«¤Ë¤Ê¤Ã¤Æ¤¤¤Æ¤â make ¤ÏÌäÂê¤Ê¤¯»È¤¨¤ë¡¥



Something complicated: ¤â¤¦¤Á¤ç¤Ã¤È¤À¤±Â³¤¯¤ó¤¸¤ã¡Ä

¤µ¤Æ¡¤º£Å٤ϡ¤¾å¤Îºî¶È¤ò 3¤Ä¤Î¥×¥í¥°¥é¥à¤ò¥³¥ó¥Ñ¥¤¥ë¤·¡¤3¤Ä¤Î¼Â¹Ô¥Õ¥¡¥¤ ¥ë¤ò¼Â¹Ô¤·¡¤3¤Ä¤Î¥Ç¡¼¥¿¥Õ¥¡¥¤¥ë¤òºî¤é¤»¤Æ¡¤¤½¤ì¤òÅý¹ç¤·¤¿¥°¥é¥Õ¥Õ¥¡¥¤¥ë ¤ò1¤Äºî¤ë¤È¤¤¤¦¤â¤Î¤Ë¤·¤è¤¦¡¥ ¤Ê¤Ë¡¤Íý¶þ¤¬¤ï¤«¤Ã¤Æ¤¤¤ì¤Ð´Êñ¤À¡¥



notes.png ¼Â½¬: Àè¤Î³¤­¤Î·Á¤Ë¤Ê¤ë¡¥Â³¤­¤È¤·¤Æ¡¤°Ê²¼¤Î¤è¤¦¤Ë¤ä¤Ã¤Æ¤ß¤è¤¦¡¥

  1. f_cos.c ¤È¤¤¤¦Ì¾Á°¤Î¥Õ¥¡¥¤¥ë¤òºî¤ê¡¤¼¡¤ÎÃæ¿È¤ò½ñ¤­¹þ¤ó¤Ç¤ª¤¯¡¥
     #include <stdio.h>
     #include <math.h>
     main () {
       double x,dx;
       dx = 1.0/100;
       x = 0.0;
       for ( x = 0.0; x <= 1.0+dx; x += dx) {
         printf("%6.3f %6.3f\n", x, cos(x));
         }
       return 0;
     }
    warning.png ²¿¤ò¤¹¤ë¥×¥í¥°¥é¥à¤«, Æɲò¤·¤Æ¤ª¤³¤¦¡¥

  2. f_sqr.c ¤È¤¤¤¦Ì¾Á°¤Î¥Õ¥¡¥¤¥ë¤òºî¤ê¡¤¼¡¤ÎÃæ¿È¤ò½ñ¤­¹þ¤ó¤Ç¤ª¤¯¡¥
     #include <stdio.h>
     #include <math.h>
     main () {
       double x,dx;
       dx = 1.0/100;
       x = 0.0;
       for ( x = 0.0; x <= 1.0+dx; x += dx) {
         printf("%6.3f %6.3f\n", x, x*x);
         }
       return 0;
     }
    warning.png ¤³¤ì¤â²¿¤ò¤¹¤ë¥×¥í¥°¥é¥à¤«, Æɲò¤·¤Æ¤ª¤³¤¦¡¥

  3. Makefile ¤ÎÃæ¿È¤ò°Ê²¼¤Î¤è¤¦¤Ë½¤Àµ¤¹¤ë(¤À¤¤¤ÖÊѤï¤ë¤Î¤ÇÃí°Õ¿¼¤¯ºî¶È¤·¤è¤¦)¡¥

    all.eps:␣f_sin.dat␣f_cos.dat␣f_sqr.dat

    ____␉____ gnuplot␣"all2eps.gpl"


    f_sin.dat:␣f_sin.exe

    ____␉____ \rm␣-f␣f_sin.dat

    ____␉____ ./f_sin.exe␣>␣f_sin.dat


    f_cos.dat:␣f_cos.exe

    ____␉____ \rm␣-f␣f_cos.dat

    ____␉____ ./f_cos.exe␣>␣f_cos.dat


    f_sqr.dat:␣f_sqr.exe

    ____␉____ \rm␣-f␣f_sqr.dat

    ____␉____ ./f_sqr.exe␣>␣f_sqr.dat


    f_sin.exe:␣f_sin.c

    ____␉____ gcc␣-lm␣f_sin.c␣-o␣f_sin.exe


    f_cos.exe:␣f_cos.c

    ____␉____ gcc␣-lm␣f_cos.c␣-o␣f_cos.exe


    f_sqr.exe:␣f_sqr.c

    ____␉____ gcc␣-lm␣f_sqr.c␣-o␣f_sqr.exe

    warning.png ¡Öºî¶È¡×¤Î¹Ô¤Ï¡Ö¥¿¥Ö¡×+¥³¥Þ¥ó¥É¤Ç¤¢¤ë¤³¤È¤ò˺¤ì¤º¤Ë¡ª
    warning.png ¤³¤³¤â¡¤¥¿¥Ö¤òÌÀµ­¤¹¤ë¤¿¤á¤Ë¤¤¤Ä¤â¤È¾¯¤·°ã¤¦É½µ­¤ò¤·¤Æ¤¤¤ë. ¥³¥Ô¥Ú¤Ç¤­¤Ê¤¤¤Î¤Ç¼«ÎϤÇÆþÎϤ·¤è¤¦¡¥
    warning.png ²¿¤ò¤¹¤ë¥ì¥·¥Ô¤Ë¤Ê¤Ã¤¿¤«, ¤³¤ì¤âÆɤó¤Ç³Îǧ¤·¤Æ¤ª¤³¤¦¡¥

  4. Àè¤ÈƱ¤¸¥Ç¥£¥ì¥¯¥È¥ê¤Ë all2eps.gpl ¤È¤¤¤¦Ì¾Á°¤Î¥Õ¥¡¥¤¥ë¤òºî¤ê¡¤¼¡¤ÎÃæ¿È¤ò½ñ¤­¹þ¤ó¤Ç¤ª¤¯¡¥
     set output "all.eps"
     set term postscript
     plot "f_sin.dat" w l,"f_cos.dat" w l,"f_sqr.dat" w l

    warning.png ºÇ¸å¤Î¹Ô¤Î½ÄËÀ¤Ã¤Ý¤¤Ê¸»ú¤ÏÁ´¤Æ l(¾®Ê¸»ú¤Î¥¨¥ë)¤À¡¥
    warning.png ºÇ¸å¤Î¹Ô¤ò¤­¤Ã¤Á¤ê²þ¹Ô¤·¤Æ¤ª¤¯¤³¤È¤ò˺¤ì¤Ê¤¤¤è¤¦¤Ë¡ª

  5. make ¤·¤Æ¤ß¤ë¡¥

    make



  6. ÌäÂ꤬¤Ê¤±¤ì¤Ð¡¤all.eps ¤È¤¤¤¦²èÁü¥Õ¥¡¥¤¥ë¤¬¤Ç¤­¤Æ¤¤¤ë¤Î¤Ç¡¤¸«¤Æ¤ß¤è¤¦. GUI ¤Ç¤½¤Î¥Õ¥¡¥¤¥ë¤ò¥Þ¥¦¥¹¤Ç¥À¥Ö¥ë¥¯¥ê¥Ã¥¯¤¹¤ë¤â¤è¤·¡¤¼¡¤Î¥³¥Þ¥ó¥É¤Ç¤â¤¤¤±¤ë¤À¤í¤¦¡¥

    gv␣all.eps␣&



  7. ¥×¥í¥°¥é¥à¤Î¤¤¤º¤ì¤«¤òŬÅö¤Ë½¤Àµ¤·¤Æ¤ß¤è¤¦¡¥ÆâÍƤϥ°¥é¥Õ¤¬¤ª¤«¤·¤¯¤Ê¤é¤Ê¤¤¤è¤¦¤Ê¤â¤Î¤Ê¤é¤Ê¤ó¤Ç¤âÎɤ¤¡¥

  8. ºÆ¤Ó make ¤·¤Æ¤ß¤ë¡¥

    make



  9. º£Å٤μ¹Էë²Ì¤Ï°Û¤Ê¤ë¤Ï¤º¤À¡¥¸«¤Æ¤ß¤è¤¦¡¥

    gv␣all.eps␣&



Advanced syntax: make ¤Îʸˡ¤ò¤­¤Á¤ó¤È»È¤¦¤È³Ú¤Ç¤­¤ëÎã

Àè¤Î Makefile ¤ò¸«¤ë¤È¡¤»÷¤¿¤è¤¦¤Ê¤³¤È¤¬²¿²ó¤â½ñ¤«¤ì¤Æ¤¤¤Æ¡¤ÌÌÅݤʾå¤Ë´Ö°ã¤¨¤ä¤¹¤¤¡¥ ¤â¤Á¤í¤ó¡¤make ¤Îʸˡ¤Ï¤³¤¦¤¤¤¦¤³¤È¤Ï¹îÉþ¤Ç¤­¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤ë¡¥ Î㤨¤ÐÀè¤Î Makefile ¤ÈƱ¤¸Æ°ºî¤ò¤¹¤ë¤è¤¦¤Ê¡¤¥·¥ó¥×¥ë¤Ê Makefile ¤Ï¼¡¤Î¤è¤¦¤Ë¤Ê¤ë¡¥

.SUFFIXES␣:␣.dat␣.exe

DATA␣=␣f_sin.dat␣f_cos.dat␣f_sqr.dat


.c.exe:

____␉____ gcc␣-lm␣$<␣-o␣$@


.exe.dat:

____␉____ \rm␣-f␣$@

____␉____ ./$<␣>␣$@


all.eps:␣$(DATA)

____␉____ gnuplot␣"all2eps.gpl"


$(DATA):


warning.png ¾å¤Î Makefile Ãæ¤Ë¤Ï·«¤êÊÖ¤·¤Îµ­½Ò¤¬Ìµ¤¤¤³¤È¤ËÃí°Õ¤·¤è¤¦¡¥ÌµÂ̤â¥Ð¥°¤Î²¹¾²¤â¤Ê¤¯¤Ê¤Ã¤¿¤³¤È¤Ë¤Ê¤ë¡¥
notes.png ¼Â½¬:(;͵¤¬¤¢¤ë¤Ê¤é¤Ð) make ¤Îʸˡ¤òÄ´¤Ù¡¤¾å¤Î Makefile ¤òÍý²ò¤·¤è¤¦¡¥



Report: ¥ì¥Ý¡¼¥È

°Ê²¼¤Î²ÝÂê¤Ë¤Ä¤¤¤Æǽ¤¦¸Â¤ê¸­ÌÀ¤ÊÄ´ºº¤È¹Í»¡¤ò¹Ô¤¤¡¤
AppliedMath7-Report-11
¤È¤¤¤¦Âê̾¤ò¤Ä¤±¤Æ e-mail ¤Ë¤Æ¶µ´±°¸¤Ë¥ì¥Ý¡¼¥È¤È¤·¤ÆÄó½Ð¤»¤è. ¤Ê¤ª¡¤¥ì¥Ý¡¼¥È¤ò e-mail ¤ÎÂå¤ï¤ê¤Ë TeX ¤ÇºîÀ®¤·¤¿½ñÌ̤ˤÆÄó½Ð¤·¤Æ¤â¤è¤¤.

Exercises: ²ÝÂê

  1. Makefile ¤ò½¤Àµ¤·¤Æ¡¤¥×¥í¥°¥é¥à¥Õ¥¡¥¤¥ë(.c ¤È¤Ä¤¤¤Æ¤¤¤ë¤â¤Î)¤Î¥Ð¡¼¥¸¥ç¥ó´ÉÍý¤ò¤µ¤»¤ë¤è¤¦¤Ë¤·¤Æ¤ß¤è.

  2. Makefile ¤Ë¤µ¤é¤ËÄɲ䷤ơ¤¤Ç¤­¤¿¥°¥é¥Õ¥Õ¥¡¥¤¥ë¤ò°µ½Ì¤¹¤ëµ¡Ç½¤ò¤Ä¤±¤Æ¤ß¤è¡¥

  3. TeX ¤¬»È¤¨¤ë¤â¤Î¤Ï¡¤º£²ó¤Î¼ø¶ÈÎã¤ò½¤Àµ¤·¤Æ TeX ¤òÍí¤á¤é¤ì¤Ê¤¤¤«¹Í¤¨¤Æ¤ß¤è¡¥



about Icons, ClipArts

For details, see JNorth_arrow-right-sm.png this.


*1 ¤µ¤·¤º¤á make ¤ÏÎÁÍý¿Í¤È¤¤¤¦¤È¤³¤í¤«
*2 ¥³¥ó¥Ô¥å¡¼¥¿¤Ç¤ÏÅÓÃæ·Ð²á¥Õ¥¡¥¤¥ë¤òÊݸ¤·¤Æ¤¢¤ë¾õÂÖ
*3 ¥¿¥Ö¤Ç¤Ê¤¤Ê¸»ú¤ò»È¤¦¤È¡¤make ¤·¤¿¤È¤­¤Ë¡¤¡ÖʬΥµ­¹æ¤ò·ç¤¤¤Æ¤¤¤Þ¤¹ (8¸Ä¤Î¶õÇò¤Ç¤·¤¿¤¬¡¤TAB ¤Î¤Ä¤â¤ê¤Ç¤·¤¿¤«?)¡×¤Ê¤ó¤Æ¸À¤ï¤ì¤¿¤ê¤¹¤ë¡¥¿ÆÀÚ¤À¤Ê¤¢¡¥