ãã ãããã®äººæ°ã«ãããããããmakeã¯äž»ã«æ¬ é¥ã®ããããŒã«ã§ãã ãã®ä¿¡é Œæ§ã¯çãããã ç¹ã«å€§èŠæš¡ãããžã§ã¯ãã®çç£æ§ãäœãã ã¡ã€ã¯ãã¡ã€ã«èšèªèªäœã¯é£è§£ã«èŠããŸãããåæã«ãå ã ä»ã®å€ãã®ããã°ã©ãã³ã°èšèªã«ååšããŠããåºæ¬çãªèŠçŽ ã®å€ããæ¬ ããŠããŸãã
ãã¡ããããã«ããèªååãããŠãŒãã£ãªãã£ã¯makeã ãã§ã¯ãããŸããã makeã®å¶éãåãé€ãããã«ãä»ã®å€ãã®ããŒã«ãäœæãããŠããŸãã ãããã®ããã€ãã¯å ã®ã¡ãŒã«ãŒãããééããªãåªããŠããŸãããããã¯ã¡ãŒã«ãŒã®äººæ°ã«åœ±é¿ããŸããã§ããã ãã®ããã¥ã¡ã³ãã®ç®çã¯ãç°¡åã«èšãã°ãmakeã«é¢é£ããããã€ãã®åé¡ã«ã€ããŠèª¬æããããšã§ãããããããããªããé©ãããªãããã«ããããšã§ãã
ãã®èšäºã®åŒæ°ã®ã»ãšãã©ã¯ãå ã®UNIX makeããã³GNU makeã«é¢é£ããŠããŸãã ä»æ¥ã®GNU makeã¯æãäžè¬çã§ããå¯èœæ§ãé«ããããmakeãŸãã¯ãmakefilesãã«ã€ããŠèšåããå ŽåãGNU makeãæå³ããŸãã
ãŸãããã®èšäºã§ã¯ãèªè ãåºæ¬ã¬ãã«ã§makeã«ãã§ã«ç²ŸéããŠããããã«ãŒã«ãããç®æšãããäŸåé¢ä¿ããªã©ã®æŠå¿µãç解ããŠããããšãåæãšããŠããŸãã
èšèªãã¶ã€ã³
ã¡ã€ã¯ãã¡ã€ã«ãäœæããããšããã人ãªã誰ã§ãããã®æ§æã®ãç¹ç°æ§ãã«ééããå¯èœæ§ãé«ãã§ããããã¿ãã䜿çšããŸãã ã³ãã³ãã®éå§ã説æããåè¡ã¯ãã¿ãæåã§å§ãŸãå¿ èŠããããŸãã ã¹ããŒã¹ã¯åãŸããŸãã-ã¿ãã ãã§ãã æ®å¿µãªãããããã¯makeèšèªã®å¥åŠãªåŽé¢ã®1ã€ã«ãããŸããã
ååž°çãªã¡ã€ã¯
ã«ãŒã«ãå¥ã®makeã»ãã·ã§ã³ãäœæãããšãã«ã¡ã€ã¯ãã¡ã€ã«ã«ãŒã«ãå®çŸ©ããå Žåãååž°makeã¯äžè¬çãªãã¿ãŒã³ã§ãã åmakeã»ãã·ã§ã³ã¯ãããã¬ãã«ã®makefileãäžåºŠããèªã¿åããªããããããã¯è€æ°ã®ãµããããžã§ã¯ãã§æ§æããããããžã§ã¯ãã®makefileãèšè¿°ããèªç¶ãªæ¹æ³ã§ãã
ãååž°çãªã¡ã€ã¯ãã¯éåžžã«å€ãã®åé¡ãåŒãèµ·ããããããã®ãœãªã¥ãŒã·ã§ã³ãæªãçç±ã瀺ãèšäºãæžãããŠããŸãã å€ãã®å°é£ãèå¥ããŸãïŒãã®ãã¡ã®ããã€ãã以äžã§èª¬æããŸãïŒããååž°ã䜿çšããªãã¡ã€ã¯ãã¡ã€ã«ã®äœæã¯å®éã«ã¯é£ããäœæ¥ã§ãã
ããŒãµãŒ
ããã°ã©ãã³ã°èšèªã®ã»ãšãã©ã®ããŒãµãŒã¯ãåãåäœãã¿ãŒã³ã«åŸããŸãã æåã«ããœãŒã¹ããã¹ãã¯ãããŒã¯ã³ããŸãã¯ãã¹ãã£ã³ãã«åå²ãããã³ã¡ã³ããšã¹ããŒã¹ã¯æšãŠãããå ¥åããã¹ãïŒããªãèªç±ãªåœ¢åŒã§æå®ïŒã¯ãæåãããèå¥åãããäºçŽèªããªã©ã®ãããŒã¯ã³ãã®ã¹ããªãŒã ã«å€æãããŸãã 次ã«ãããŒã¯ã³ã®çµæã®ã¹ããªãŒã ã¯ãæ£ããçµã¿åãããšããŒã¯ã³ã®é åºã決å®ããèšèªææ³ã䜿çšããŠã解æããããŸãã æçµçã«ãçµæã®ãææ³ããªãŒãã¯è§£éãã³ã³ãã€ã«ãªã©ãããŸãã
makeããŒãµãŒã¯ãã®æšæºã¢ãã«ã«åŸããŸããã ã¡ã€ã¯ãã¡ã€ã«ãåæã«å®è¡ããªããšè§£æã§ããŸããã å€æ°çœ®æã¯ã©ãã§ãçºçããå¯èœæ§ããããå€æ°ã®å€ãããããªãããã解æãç¶è¡ã§ããŸããã ãã®çµæãèšèªå šäœã®å®è£ ãäœæããå¿ èŠããããããã¡ã€ã¯ãã¡ã€ã«ã解æã§ããå¥ã®ãŠãŒãã£ãªãã£ãäœæããããšã¯éåžžã«ç°¡åãªäœæ¥ã§ãã
ãŸããèšèªã«ã¯ããŒã¯ã³ãžã®æ確ãªåºåã¯ãããŸããã ããšãã°ãã³ã³ãã®åŠçæ¹æ³ãèŠãŠã¿ãŸãããã
ã³ã³ããè¡ã®äžéšã§ãããç¹å¥ãªã¹ããŒã¿ã¹ãæããªãå ŽåããããŸãã
X = y,z
ifã¹ããŒãã¡ã³ãã§æ¯èŒãããè¡ãã³ã³ãã§åºåãããšããããŸãã
ifeq ($(X),$(Y))
é¢æ°ã®åŒæ°ãã³ã³ãã§åºåãããšããããŸãã
$(filter %.c,$(SRC_FILES))
ãã ããé¢æ°ã®åŒæ°éã§ããã³ã³ããè¡ã®äžéšã«ãããªãå ŽåããããŸãã
$(filter %.c,ac bc c.cpp d,ec)
ïŒ
filter
ã¯2ã€ã®ãã©ã¡ãŒã¿ãŒã®ã¿ãåãå ¥ãããããæåŸã®ã³ã³ãã¯æ°ãããã©ã¡ãŒã¿ãŒãè¿œå ããã2çªç®ã®åŒæ°ã®æåã®1ã€ã«ãªããŸãïŒ
ã¹ããŒã¹ã¯åããããŸããªã«ãŒã«ã«åŸããŸãã ã®ã£ãããèæ ®ãããããšãããã°ãèæ ®ãããªãããšããããŸãã è¡ã¯åŒçšç¬Šã§å²ãŸããŠããŸãã;ãã®ãããã©ã®ã¹ããŒã¹ãéèŠã§ãããã¯èŠèŠçã«æ確ã§ã¯ãããŸããã ããªã¹ãããªã©ã®ããŒã¿åããªãããïŒè¡ã®ã¿ãååšããããïŒããªã¹ãé ç®ã®åºåãæåãšããŠã¹ããŒã¹ã䜿çšããå¿ èŠããããŸãã ãã®çµæãããšãã°ãã¡ã€ã«åã«ã¹ããŒã¹ãå«ãŸããŠããå Žåãªã©ãããžãã¯ãé床ã«è€éã«ãªããŸãã
次ã®äŸã¯ãã¹ããŒã¹ãåŠçããããã®è€éãªããžãã¯ã瀺ããŠããŸãã ã¹ããŒã¹ã§çµããå€æ°ãäœæããã«ã¯ããããŸããªããªãã¯ãå¿ èŠã§ãã ïŒéåžžãè¡æ«ã®ã¹ããŒã¹ã¯ããŒãµãŒã«ãã£ãŠã¹ããŒãããŸãããå€æ°ã®çœ®æåŸã§ã¯ãªãåã«çºçããŸãïŒã
NOTHING := SPACE := $(NOTHING) $(NOTHING) CC_TARGET_PREFIX := -o$(SPACE) # $(CC_TARGET_PREFIX)$@
ãããŠãã«ã³ããšã¹ããŒã¹ã«è§ŠããŸããã makeããŒãµãŒã®è€éããç解ããŠãã人ã¯ãããããã§ãã
åæåãããŠããªãç°å¢å€æ°ã
makefileã§åæåãããŠããªãå€æ°ã«ã¢ã¯ã»ã¹ããå Žåãmakeã¯ãšã©ãŒãå ±åããŸããã 代ããã«ãåãååã®ç°å¢å€æ°ãããã®å€æ°ã®å€ãååŸããŸãã åãååã®ç°å¢å€æ°ãèŠã€ãããªãå Žåãå€ã¯ç©ºã®æååã§ãããšèŠãªãããŸãã
ããã«ããã2çš®é¡ã®åé¡ãçºçããŸãã ãŸããã¿ã€ããã¹ã¯ãã£ãããããããšã©ãŒãšã¯èŠãªãããŸããïŒãã®ãããªç¶æ³ã§ã¯makeã«èŠåãçºè¡ãããããšãã§ããŸããããã®åäœã¯ããã©ã«ãã§ç¡å¹ã«ãªã£ãŠãããåæåãããŠããªãå€æ°ãæå³çã«äœ¿çšãããå ŽåããããŸãïŒã 2çªç®ã®-ç°å¢å€æ°ã¯ãã¡ã€ã¯ãã¡ã€ã«ã®ã³ãŒãã«äºæãã¬åœ±é¿ãäžããå¯èœæ§ããããŸãã ãŠãŒã¶ãŒãã©ã®å€æ°ãèšå®ã§ãããã確å®ã«ç¥ãããšã¯ã§ããŸããããããã£ãŠãä¿¡é Œæ§ã®ããã«ããã¹ãŠã®å€æ°ãåç §ãŸãã¯
+=
è¿œå ããåã«åæåããå¿ èŠããããŸãã
ãŸããã
make FOO=1
ããšããŠåŒã³åºããããšãã®makeã®åäœãšãã
export FOO=1 ; make
ããžã®åŒã³åºãã®éã«çŽããããéãããããŸãã æåã®ã±ãŒã¹ã§ã¯ãã¡ã€ã¯ãã¡ã€ã«
FOO = 0
ã¯å¹æããããŸããïŒ ä»£ããã«ã
override FOO = 0
èšè¿°ããå¿ èŠããã
override FOO = 0
ã
æ¡ä»¶åŒã®æ§æ
ã¡ã€ã¯ãã¡ã€ã«èšèªã®äž»ãªæ¬ ç¹ã®1ã€ã¯ãæ¡ä»¶åŒã®ãµããŒããéãããŠããããšã§ãïŒç¹ã«ãã¯ãã¹ãã©ãããã©ãŒã ã®ã¡ã€ã¯ãã¡ã€ã«ãäœæããããã«ã¯æ¡ä»¶ã¹ããŒãã¡ã³ããéèŠã§ãïŒã makeã®æ°ããããŒãžã§ã³ã«ã¯ãã else if ãæ§æã®ãµããŒããæ¢ã«å«ãŸããŠããŸãã ãã¡ããã ifã¹ããŒãã¡ã³ãã«ã¯ãifeqãifneqãifdef ã ifndefã® 4ã€ã®åºæ¬ãªãã·ã§ã³ãããããŸãã ã æ¡ä»¶ãããè€éã§ããand / or / notãã®ç¢ºèªãå¿ èŠãªå Žåã¯ãããé¢åãªã³ãŒããèšè¿°ããå¿ èŠããããŸãã
ã¿ãŒã²ãããã©ãããã©ãŒã ãšããŠLinux / x86ãå®çŸ©ããå¿ èŠããããšããŸãã 次ã®ããã¯ã¯ããandãæ¡ä»¶ããµãã²ãŒãã«çœ®ãæããéåžžã®æ¹æ³ã§ãã
ifeq ($(TARGET_OS)-$(TARGET_CPU),linux-x86) foo = bar endif
æ¡ä»¶ããŸãã¯ãã¯ããã»ã©åçŽã§ã¯ãããŸããã x86ãŸãã¯x86_64ãå®çŸ©ããå¿ èŠããããã foo = bar ãã®ä»£ããã«10è¡ä»¥äžã®ã³ãŒããããããããè€è£œããããªããšããŸãã ããã€ãã®ãªãã·ã§ã³ãããããããããæªãã§ãïŒ
# , ifneq (,$(filter x86 x86_64,$(TARGET_CPU)) foo = bar endif # , ifeq ($(TARGET_CPU),x86) TARGET_CPU_IS_X86 := 1 else ifeq ($(TARGET_CPU),x86_64) TARGET_CPU_IS_X86 := 1 else TARGET_CPU_IS_X86 := 0 endif ifeq ($(TARGET_CPU_IS_X86),1) foo = bar endif
èšèªãå®å šãªæ§æããµããŒãããŠããã°ãã¡ã€ã¯ãã¡ã€ã«ã®å€ãã®å ŽæãåçŽåã§ããŸãã
2çš®é¡ã®å€æ°
makeã«ã¯2çš®é¡ã®å€æ°ã®å²ãåœãŠããããŸãã " ïŒ= "ã¯ãå³åŽã®åŒãããã«è©äŸ¡ããŸãã éåžžã®ã = ãã¯ãåŸã§å€æ°ã䜿çšããããšãã«åŒãè©äŸ¡ããŸãã æåã®ãªãã·ã§ã³ã¯ãä»ã®ã»ãšãã©ã®ããã°ã©ãã³ã°èšèªã§äœ¿çšãããååãšããŠãç¹ã«åŒã®èšç®ãé£ããå Žåã¯ããå¹æçã§ãã ãã¡ããã2çªç®ã®ãªãã·ã§ã³ã¯ãäž»ã«ã¡ã€ã¯ãã¡ã€ã«ã§äœ¿çšãããŸãã
ã = ãïŒé 延èšç®ã䜿çšïŒã䜿çšãã客芳çãªçç±ããããŸãã ãã ããå€ãã®å Žåãããæ£ç¢ºãªã¡ã€ã¯ãã¡ã€ã«ã¢ãŒããã¯ãã£ã䜿çšããŠåé€ã§ããŸãã ããã©ãŒãã³ã¹ã®åé¡ãèæ ®ããªããŠããé 延èšç®ã«ãããã¡ã€ã¯ãã¡ã€ã«ã³ãŒãã®èªã¿åããšç解ãããå°é£ã«ãªããŸãã
éåžžãããã°ã©ã ã¯æåããæåŸãŸã§ïŒå®è¡ãããé åºãšåãé åºã§ïŒèªã¿åãããšãã§ãããã€ã§ããã®ç¶æ ãæ£ç¢ºã«ç¥ãããšãã§ããŸãã é 延èšç®ã§ã¯ãããã°ã©ã ã§æ¬¡ã«äœãèµ·ããããç¥ããªããã°ãå€æ°ã®å€ãç¥ãããšã¯ã§ããŸããã å€æ°ã¯ãçŽæ¥å€æŽããããšãªãããã®å€ãéæ¥çã«å€æŽã§ããŸãã ããšãã°ãããããã°åºåãã䜿çšããŠã¡ã€ã¯ãã¡ã€ã«å ã®ãšã©ãŒãæ€çŽ¢ããããšãããšã次ã®ããã«ãªããŸãã
...å¿ èŠãªãã®ãåŸãããªãå ŽåããããŸãã$(warning VAR=$(VAR))
ãã¿ãŒã³çœ®æãšãã¡ã€ã«æ€çŽ¢
äžéšã®ã«ãŒã«ã§ã¯ãïŒ èšå·ã䜿çšããŠãã¡ã€ã«åã®äž»èŠéšåïŒæ¡åŒµåãªãïŒã瀺ããŸã-äžéšã®ãã¡ã€ã«ãä»ã®ãã¡ã€ã«ããçæããããã®ã«ãŒã«ãèšå®ããããã ããšãã°ã .cãã¡ã€ã«ãæ¡åŒµå.oã®ãªããžã§ã¯ããã¡ã€ã«ã«ã³ã³ãã€ã«ããã«ãŒã«ã ïŒ .oïŒïŒ .c ãã
ãªããžã§ã¯ããã¡ã€ã«foo.oãäœæããå¿ èŠããããããœãŒã¹ãã¡ã€ã«foo.cãçŸåšã®ãã£ã¬ã¯ããªã«ãªãå Žæã«ãããšããŸãã Makeã«ã¯ããã®ãããªãã¡ã€ã«ãæ¢ãå Žæãæ瀺ããvpathãã£ã¬ã¯ãã£ãããããŸãã æ®å¿µãªãããfoo.cãšããååã®ãã£ã¬ã¯ããªããã£ã¬ã¯ããªã§2åèŠã€ãã£ãå Žåãmakeã¯ééã£ããã¡ã€ã«ãéžæããå¯èœæ§ããããŸãã
2ã€ã®ãœãŒã¹ãã¡ã€ã«ãåãååïŒãã ãæ¡åŒµåãç°ãªãïŒã§ã暪ã«äžŠãã§ããå Žåãã¡ã€ã¯ãã¡ã€ã«ã®æ¬¡ã®æšæºããã°ã©ãã³ã°ãã¿ãŒã³ã¯å€±æããŸãã åé¡ã¯ãããœãŒã¹ãã¡ã€ã«å=>ãªããžã§ã¯ããã¡ã€ã«åãã®å€æã§äžéšã®æ å ±ã倱ãããããšã§ãããmake'aã®èšèšã§ã¯éãããã³ã°ãè¡ãããã«ãããå¿ èŠã§ãã
O_FILES := $(patsubst %.c,%.o,$(notdir $(C_FILES))) vpath %.c $(sort $(dir $(C_FILES))) $(LIB): $(O_FILES)
ãã®ä»ã®äžè¶³ããŠããæ©èœ
makeã¯ããŒã¿åãèªèãããæååã®ã¿ãèªèããŸãã ããŒã«åããªã¹ããèŸæžã¯ãããŸããã
ãã¹ã³ãŒããã®æŠå¿µã¯ãããŸããã ãã¹ãŠã®å€æ°ã¯ã°ããŒãã«ã§ãã
ãµã€ã¯ã«ã®ãµããŒãã¯å¶éãããŠããŸãã $ïŒforeachïŒã¯åŒãæ°åè©äŸ¡ããçµæãçµåããŸããã $ïŒforeachïŒã䜿çšããŠãããšãã°ã«ãŒã«ã®ã°ã«ãŒããäœæããããšã¯ã§ããŸããã
ãŠãŒã¶ãŒå®çŸ©é¢æ°ã¯ååšããŸããã foreachãšåãå¶éããããŸãã å€æ°ã®çœ®æã®ã¿ãåŠçã§ããèšèªæ§æãå®å šã«äœ¿çšããããæ°ããäŸåé¢ä¿ãäœæãããããããšã¯ã§ããŸããã
ä¿¡é Œæ§
ç¹ã«å€§èŠæš¡ãªãããžã§ã¯ããã€ã³ã¯ãªã¡ã³ã¿ã«ã³ã³ãã€ã«ã§ã¯ãMakeã®ä¿¡é Œæ§ã¯äœããªããŸãã ã¢ã»ã³ããªãå¥åŠãªãšã©ãŒã§ã¯ã©ãã·ã¥ããå Žåããããmake cleanãªã©ã®ãéæ³ãã䜿çšããŠããã¹ãŠãä¿®æ£ãããããšãæåŸ ããå¿ èŠããããŸãã æã ïŒããå±éºãªç¶æ³ïŒãã¹ãŠãèŠãç®ã¯è¯ãã®ã§ãããäœããåã³ã³ãã€ã«ãããŠããããã¢ããªã±ãŒã·ã§ã³ãèµ·ååŸã«ã¯ã©ãã·ã¥ããŸãã
äžè¶³ããŠããäŸåé¢ä¿
åã¿ãŒã²ããã®ãã¹ãŠã®äŸåé¢ä¿ã«ã€ããŠmakeã«éç¥ããå¿ èŠããããŸãã ããããªããšãäŸåãã¡ã€ã«ãå€æŽããããšãã«ã¿ãŒã²ãããåã³ã³ãã€ã«ããŸããã C / C ++ã®å Žåãå€ãã®ã³ã³ãã€ã©ã¯makeãç解ã§ãã圢åŒã§äŸåé¢ä¿æ å ±ãçæã§ããŸãã ãã ããä»ã®ãŠãŒãã£ãªãã£ã®å Žåãç¶æ³ã¯ã¯ããã«æªããªããŸãã ä»ã®ã¢ãžã¥ãŒã«ãå«ãpythonã¹ã¯ãªããããããšããŸãããã ã¹ã¯ãªããã®å€æŽã¯ãçµæã®å€æŽã«ã€ãªãããŸãã ããã¯ã¡ãŒã¯ãã¡ã€ã«ã«å¯ŸããŠæçœãã€ç°¡åã«äœæã§ããŸãã ãã ããã¢ãžã¥ãŒã«ã®1ã€ãå€æŽãããšãã¹ã¯ãªããåºåãå€æŽãããå¯èœæ§ããããŸãã ããããã¹ãŠã®äŸåé¢ä¿ã®å®å šãªèª¬æãšããããææ°ã®ç¶æ ã«ä¿ã€ããšã¯ãç°¡åãªäœæ¥ã§ã¯ãããŸããã
ã©ãã«ãæçµãã¡ã€ã«å€æŽæå»ãã®äœ¿çš
makeã¯ãã¿ãŒã²ããã®ãæçµå€æŽæå»ããšäŸåé¢ä¿ã®åãæå»ãæ¯èŒããããšã«ãããã¿ãŒã²ãããåã¢ã»ã³ããªãå¿ èŠãšããããšã決å®ããŸãã ãã¡ã€ã«ã®å 容ã®åæã¯è¡ããããæéã®æ¯èŒã®ã¿ãè¡ãããŸãã ãã ããç¹ã«ãããã¯ãŒã¯ç°å¢ã§ã¯ããã®ãã¡ã€ã«ã·ã¹ãã æ å ±ã®äœ¿çšãåžžã«ä¿¡é Œã§ãããšã¯éããŸããã ã·ã¹ãã ã¯ããã¯ãé ããå Žåããããä»ã®ããã°ã©ã ããã¡ã€ã«ã®å€æŽã«å¿ èŠãªæéã匷å¶ãããå®éã®ãå€ãäžæžãããå ŽåããããŸãã ãã®å Žåãmakeã¯åæ§ç¯ããå¿ èŠã®ããç®æšãåæ§ç¯ããŸããã çµæã¯ãéšåçãªåã³ã³ãã€ã«ã®ã¿ã§ãã
ã³ãã³ãã©ã€ã³ãªãã·ã§ã³
ããã°ã©ã ã®ãã©ã¡ãŒã¿ãŒæååãå€æŽããããšããã®çµæãå€æŽãããå¯èœæ§ããããŸãïŒããšãã°ãCããªããã»ããµãŒã«æž¡ããã-Doptionã®å€æŽïŒã ãã®å Žåãmakeã¯åã³ã³ãã€ã«ããŸãããããã«ããã誀ã£ãäžéåã³ã³ãã€ã«ãè¡ãããŸãã
Makefileãåã¿ãŒã²ããã«è¿œå ããããšã§ããããã身ãå®ãããšãã§ããŸãã ãã ããã¿ãŒã²ãããéãå¯èœæ§ãããããããã®ã¢ãããŒãã¯ä¿¡é Œã§ããŸããã ããã«ãMakefileã«ã¯ä»ã®Makefileãå«ãŸããå ŽåããããMakefileã«ã¯Makefileãå«ãŸããå ŽåããããŸãã ãããããã¹ãŠãªã¹ããããã®ãªã¹ããææ°ã®ç¶æ ã«ä¿ã€å¿ èŠããããŸãã ããã«ãã¡ã€ã¯ãã¡ã€ã«ãžã®å€ãã®å€æŽã¯ãã€ããŒã§ãã ã¡ã€ã¯ãã¡ã€ã«ã®ã³ã¡ã³ããå€æŽãããšããçç±ã ãã§ããããžã§ã¯ãå šäœãåã³ã³ãã€ã«ããå¿ èŠã¯ã»ãšãã©ãããŸããã
ç°å¢å€æ°ã®ç¶æ¿ãšããããžã®äŸå
åç°å¢å€æ°ãmakeå€æ°ã«ãªãã ãã§ãªãããããã®å€æ°ãmakeãå®è¡ããããã¹ãŠã®ããã°ã©ã ã«æž¡ãããŸãã åãŠãŒã¶ãŒã«ã¯ç¬èªã®ç°å¢å€æ°ã»ããããããããåãã¢ã»ã³ããªãå®è¡ããŠãã2人ã®ãŠãŒã¶ãŒã¯ç°ãªãçµæãåŸãããšãã§ããŸãã
åããã»ã¹ã«æž¡ãããç°å¢å€æ°ãå€æŽãããšããã®åºåãå€æŽãããå ŽåããããŸãã ã€ãŸãããã®ãããªç¶æ³ã§ã¯åæ§ç¯ãéå§ãããŸãããmakeã¯éå§ãããŸããã
è€æ°ã®åæã»ãã·ã§ã³
åããã£ã¬ã¯ããªã§makeã®2ã€ã®ã€ã³ã¹ã¿ã³ã¹ãåæã«å®è¡ãããšãåããã¡ã€ã«ãã³ã³ãã€ã«ããããšãããšãã«è¡çªããŸãã ããããããã®ãã¡ã®1ã€ïŒãŸãã¯äž¡æ¹ïŒãã¯ã©ãã·ã¥ããŸãã
åæ§ç¯äžã®ãã¡ã€ã«ã®ç·šéã
makeã®å®è¡äžã«ãã¡ã€ã«ãç·šéããŠä¿åããå Žåãçµæã¯äºæž¬ã§ããŸããã makeããããã®å€æŽãæ£ããåæ ããããããªãå Žåããããmakeãå床å®è¡ããå¿ èŠããããŸãã ãŸãã¯ãéãæªãå Žåãç®æšã®äžéšãåæ§ç¯ãå¿ èŠãšãããããªç¬éã«ä¿åãè¡ãããããšããããŸããããã®åŸã®makeã®å®è¡ã§ã¯ãããèŠã€ãããŸããã
äžèŠãªãã¡ã€ã«ãåé€ãã
ãããžã§ã¯ãã§æåã«ãã¡ã€ã«foo.cã䜿çšããŠããããåŸã§ãã®ãã¡ã€ã«ããããžã§ã¯ãããã³ã¡ã€ã¯ãã¡ã€ã«ããåé€ããããšããŸãã äžæãªããžã§ã¯ããã¡ã€ã«foo.oã¯æ®ããŸãã ããã¯é垞蚱容ãããŸããããã®ãããªãã¡ã€ã«ã¯æéã®çµéãšãšãã«èç©ããæã«ã¯åé¡ãåŒãèµ·ããå¯èœæ§ããããŸãã ããšãã°ãvpathæ€çŽ¢äžã«èª€ã£ãŠéžæãããå ŽåããããŸãã å¥ã®äŸïŒã¢ã»ã³ããªäžã«makeã«ãã£ãŠä»¥åã«çæããããã¡ã€ã«ã®1ã€ãããŒãžã§ã³ç®¡çã·ã¹ãã ã«å ¥ãããããšããŸãããã ãã®ãã¡ã€ã«ãçæããã«ãŒã«ãã¡ã€ã¯ãã¡ã€ã«ããåé€ãããŸãã ãã ããããŒãžã§ã³ç®¡çã·ã¹ãã ã¯ãåãååã®ããŒãžã§ã³åãããŠããªããã¡ã€ã«ãæ¢ã«ååšããããšã確èªããå Žåãéåžžã¯ãã¡ã€ã«ãäžæžãããŸããïŒéèŠãªãã®ãåé€ããæããããããïŒã ãã®ãããªãšã©ãŒã«é¢ããã¡ãã»ãŒãžã«æ³šæãæããããã®ãã¡ã€ã«ãæåã§åé€ããããœãŒã¹ãã£ã¬ã¯ããªãå床æŽæ°ããªãã£ãå Žåããã®ãã¡ã€ã«ã®å€ãããŒãžã§ã³ã䜿çšããŸãã
ãã¡ã€ã«åã®æ£èŠå
ç°ãªããã¹ã䜿çšããŠåããã¡ã€ã«ã«ã¢ã¯ã»ã¹ã§ããŸãã ããŒããªã³ã¯ããã³ã·ã³ããªãã¯ãªã³ã¯ãèæ ®ããªããŠããfoo.cãã/ foo.cã.. / bar / foo.cã/ home / user / bar / foo.cã¯åããã¡ã€ã«ãæãããšãã§ããŸãã makeã¯ããããé©åã«åŠçããå¿ èŠããããŸããã圌ã¯ããŸããã
ãã®åé¡ã¯ããã¡ã€ã«ã·ã¹ãã ã§å€§æåãšå°æåãåºå¥ãããªãWindowsã§ã¯ããã«æªåããŸãã
åæ§ç¯ã®äžæãŸãã¯å€±æã®çµæ
ããã»ã¹ã®éäžã§ã¢ã»ã³ããªãã¯ã©ãã·ã¥ããå Žåããã以äžã®ã€ã³ã¯ãªã¡ã³ã¿ã«ãªåã³ã³ãã€ã«ã¯ä¿¡é Œã§ããªãå ŽåããããŸãã ç¹ã«ãã³ãã³ãããšã©ãŒãè¿ããå Žåãmakeã¯äžéåºåãã¡ã€ã«ãåé€ããŸããïŒ ããäžåºŠmakeãå®è¡ãããšããã¡ã€ã«ã®åã³ã³ãã€ã«ãäžèŠã«ãªã£ãããšããããã䜿çšããããšããŸãã Makeã«ã¯ããã®ãããªãã¡ã€ã«ã匷å¶çã«åé€ããç¹å¥ãªãªãã·ã§ã³ããããŸãããããã©ã«ãã§ã¯æå¹ã«ãªã£ãŠããŸããã
åæ§ç¯äžã«Ctrl-CãæŒããšããœãŒã¹ããªãŒãç解ã§ããªãç¶æ ã«ãªãå¯èœæ§ããããŸãã
å¢ååæ§ç¯äžã«åé¡ãçºçãããã³ã«ãçåããããŸãã1ã€ã®ãã¡ã€ã«ãæ£ããåæ§ç¯ãããªãå Žåããã®ãããªãã¡ã€ã«ãããã€ããããç¥ã£ãŠããã®ã¯èª°ã§ããïŒ ãã®ãããªç¶æ³ã§ã¯ãmake cleanããããçŽãå¿ èŠãããå ŽåããããŸãã åé¡ã¯ãmake cleanãä¿èšŒãäžããªãããšã§ãïŒäžèšåç §ïŒãå¥ã®ãã£ã¬ã¯ããªã§ãœãŒã¹ããªãŒãå床å±éããå¿ èŠãããå ŽåããããŸãã
æ§èœ
ãããžã§ã¯ãã®ãµã€ãºã倧ãããªããšãMakeã®ããã©ãŒãã³ã¹ã¯ïŒéç·åœ¢ã«ïŒããŸãã¹ã±ãŒãªã³ã°ããŸããã
ã€ã³ã¯ãªã¡ã³ã¿ã«ã¢ã»ã³ããªããã©ãŒãã³ã¹
ãããžã§ã¯ãã®åæ§ç¯ã«ã¯ãåæ§ç¯ããå¿ èŠã®ããç®æšã®æ°ã«æ¯äŸããæéããããããšãæåŸ ã§ããŸãã æ®å¿µãªãããããã§ã¯ãããŸããã
ã€ã³ã¯ãªã¡ã³ã¿ã«ã¢ã»ã³ããªã®çµæãåžžã«èªä¿¡ã«ã€ãªãããšã¯éããªãããããŠãŒã¶ãŒã¯ããçšåºŠå®æçã«ãå Žåã«ãã£ãŠã¯å¿ èŠã«å¿ããŠïŒäœããããŸããããªãå Žåã¯ãããã«ããã; make ïŒãæã«ã¯çµ¶ããïŒãã©ãã€ã¢ã®ããã« ïŒå®å šã«åæ§ç¯ããå¿ èŠããããŸã ïŒ äžéšã®ãœãŒã¹ããœãŒã¹ãšåæããªããªããªã¹ã¯ãè² ããããã確å®ã«ãªãã«ããå®äºããã®ãåŸ ã€æ¹ãé©åã§ãã
ãã¡ã€ã«ã®ãæçµå€æŽæå»ãã¯ããã¡ã€ã«ã®å 容ãå€æŽããã«å€æŽã§ããŸãã ããã¯ãäžå¿ èŠãªåã³ã¡ã³ãã«ã€ãªãããŸãã
äžååãªèšè¿°ã®makefileã«ã¯äŸåé¢ä¿ãå€ãããå¯èœæ§ããããŸãããã®ããããã®ïŒå®éã®ïŒäŸåé¢ä¿ãå€æŽãããŠããªããŠããç®æšãåã³ã³ãã€ã«ã§ããŸãã ãåœã®ãç®æšã®äžæ£ç¢ºãªäœ¿çšã¯ããšã©ãŒã®å¥ã®åå ã§ãïŒãã®ãããªç®æšã¯åžžã«åæ§ç¯ããå¿ èŠããããŸãïŒã
ã¡ã€ã¯ãã¡ã€ã«ã«ãšã©ãŒãå«ãŸããŠããããã€ã³ã¯ãªã¡ã³ã¿ã«ãã«ããå®å šã«ä¿¡é Œã§ããå Žåã§ããããã©ãŒãã³ã¹ã¯å®å šã§ã¯ãããŸããã 倧ããªãããžã§ã¯ãã§.cãã¡ã€ã«ïŒããããŒãã¡ã€ã«ã§ã¯ãªãïŒã®1ã€ãç·šéãããšããŸãã ãããžã§ã¯ãã®ã«ãŒãã§makeãšå ¥åãããšãmakeã¯ãã¹ãŠã®makefileã解æããååž°çã«äœåºŠãèªåèªèº«ãåŒã³åºãããã¹ãŠã®äŸåé¢ä¿ã調ã¹ãŠãåæ§ç¯ãå¿ èŠãã©ããã確èªããå¿ èŠããããŸãã ã³ã³ãã€ã©èªäœã®éå§æéã¯ãåèšæéãããå€§å¹ ã«çããªãå ŽåããããŸãã
ååž°çãªã¡ã€ã¯ãšããã©ãŒãã³ã¹
ãã®ãããªã·ããªãªã§ã¯ãååž°çãªmakeã®äžæ³šæãªäœ¿çšã¯å±éºã§ãã ãããžã§ã¯ãã«Cã©ã€ãã©ãªã«äŸåãã2ã€ã®å®è¡å¯èœãã¡ã€ã«Aããã³Bã®ãœãŒã¹ãå«ãŸããŠãããšä»®å®ãããšãæäžäœã®ã¡ã€ã¯ãã¡ã€ã«ã¯ãã¡ãããã£ã¬ã¯ããªAããã³Bã«ååž°çã«å ¥åããå¿ èŠããããŸãã å®è¡å¯èœãã¡ã€ã«ã®1ã€ã ãããã«ãããå Žåã¯ããã£ã¬ã¯ããªAããã³Bã§makeãåŒã³åºãããšãã§ããŸãã ãããã£ãŠãåæ§ã«../Cãã£ã¬ã¯ããªããmakeãååž°çã«åŒã³åºãå¿ èŠããããŸãã ãããŠããããžã§ã¯ãã®ã«ãŒãããmakeãåŒã³åºããšã2åCã«å ¥ããŸãïŒ
ãã®äŸã§ã¯ãããã¯æãããèŠããŸãããã倧èŠæš¡ãªãããžã§ã¯ãã§ã¯ãããã€ãã®ãã£ã¬ã¯ããªã§makeãäœååãèŠããããšããããŸãã ãããŠãã¡ã€ã¯ãã¡ã€ã«ãèªã¿åãã解æãããã®äŸåé¢ä¿ããã¹ãŠãã§ãã¯ããå¿ èŠããããã³ã«ã ãã®ãããªç¶æ³ãé²ãããã®makeã®çµã¿èŸŒã¿ããŒã«ã¯ãããŸããã
ãã©ã¬ã«ã¡ã€ã¯
makeã®ã䞊è¡èµ·åãã«ãããç¹ã«å€ãã®ã³ã¢ãåããææ°ã®ããã»ããµãŒã§ãé床ãå€§å¹ ã«åäžããããšãæåŸ ãããŸãã æ®å¿µãªãããçŸå®ã¯çŽæã«ã¯ã»ã©é ãã
ããã©ã¬ã«ã¡ã€ã¯ãã®ããã¹ãåºåã¯èªã¿ã«ããã§ãã ã©ã®èŠå/è¡/ãªã©ã確èªããããšã¯å°é£ã§ãã è€æ°ã®ããã»ã¹ãåãç°å¢ã§åæã«åäœããå Žåãã©ã®ããŒã ãæããŸãã
䞊åmakeã¯ãäŸåé¢ä¿ã®æ£ããæå®ã«ç¹ã«ææã§ãã 2ã€ã®ã«ãŒã«ãäŸåé¢ä¿ãä»ããŠæ¥ç¶ãããŠããªãå Žåãmakeã¯ãããããä»»æã®é åºã§åŒã³åºãããšãã§ããããšãææ¡ããŸãã åäžã®makeãåŒã³åºããããšãããã®åäœã¯äºæž¬å¯èœã§ãïŒAãBãšCã«äŸåããå Žåãæåã«Bãæ§ç¯ããã次ã«Cã次ã«Aã«ãªããŸãããã¡ãããmakeã¯CããBãæ§ç¯ããæš©å©ããããŸãããé åºã¯å®çŸ©ãããŸãã
䞊åã¢ãŒãã§ã¯ãBãšCã䞊åã«æ§ç¯ã§ããŸãïŒãã ããå¿ é ã§ã¯ãããŸããïŒã CïŒå®éïŒãBã«äŸåããŠãããããã®äŸåé¢ä¿ãmakefileã«èšè¿°ãããŠããªãå ŽåãCã®æ§ç¯ã¯å€±æããå¯èœæ§ãæãé«ãïŒãã ããå¿ ãããç¹å®ã®æéã«äŸåããããã§ã¯ãªãïŒã
䞊åmakeã¯ãmakefileã§æ¬ èœããŠããäŸåé¢ä¿ã®åé¡ãçªãåºããŸãã ããèªäœã¯è¯ãããšã§ãã ãããã¯ä»ã®åé¡ã«ã€ãªããã®ã§ããããããã£ããããŠä¿®æ£ã§ããã®ã¯çŽ æŽãããããšã§ãã ããããå®éã«ã¯ã倧èŠæš¡ãªãããžã§ã¯ãã§ã¯ã䞊åmakeã䜿çšããçµæã¯æåŸ ã¯ããã§ãã
䞊åmakeãšååž°makeã®çžäºäœçšã¯å°é£ã§ãã åmake'aã»ãã·ã§ã³ã¯ç¬ç«ããŠããŸããã€ãŸããåã»ãã·ã§ã³ã¯ä»ã®ã»ãã·ã§ã³ãšã¯ç¬ç«ããŠãã®äœæ¥ã䞊ååããããšããŸãããå®å šãªäŸåé¢ä¿ããªãŒã®äžè¬çãªèãæ¹ã¯ãããŸããã ä¿¡é Œæ§ãšããã©ãŒãã³ã¹ã®åŠ¥åç¹ãèŠã€ããå¿ èŠããããŸãã äžæ¹ã§ã¯ãåäžã®ã¡ã€ã¯ãã¡ã€ã«ã ãã§ãªããä»ã®ãã¹ãŠã®ã¡ã€ã¯ãã¡ã€ã«ã®ã¢ã»ã³ããªã䞊ååããŸãã ãã ããmakeã¯ã¡ã€ã¯ãã¡ã€ã«éã®äŸåé¢ä¿ãèªèããªãããããµãã¡ã€ã¯ã®å®å šãªäžŠååã¯æ©èœããŸããã
ããã€ãã®ãµãã¡ã€ã¯ã¯äžŠè¡ããŠå®è¡ã§ããŸãããä»ã®ãµãã¡ã€ã¯ã¯ã·ãªã¢ã«ã¢ãŒãã§å®è¡ããå¿ èŠããããŸãã ãããã®äŸåé¢ä¿ãæå®ããã®ã¯äžäŸ¿ã§ããããããã®ããã€ããã¹ãããããããšã¯éåžžã«ç°¡åã§ãã ã¡ã€ã¯ãã¡ã€ã«ããªãŒã解æããä¿¡é Œæ§ã®é«ãã·ãŒã±ã³ã·ã£ã«ãªæ¹æ³ã«æ»ããäžåºŠã«1ã€ã®ã¡ã€ã¯ãã¡ã€ã«ã®ã¿ã䞊ååããèªæããããŸãããããã«ãããç¹ã«ã€ã³ã¯ãªã¡ã³ã¿ã«ãã«ãã®å šäœçãªããã©ãŒãã³ã¹ãå€§å¹ ã«äœäžããŸãã
Microsoft Visual C ++ã®èªåäŸåé¢ä¿çæ
GCCã®ãããªå€ãã®ã³ã³ãã€ã©ã¯ãmakeãç解ã§ãã圢åŒã§äŸåé¢ä¿æ å ±ãæäŸã§ããŸããæ®å¿µãªãããMicrosoft Visual C ++ã¯ãããè¡ããŸãããç¹å¥ãªããŒ/ showIncludesããããŸããããã®æ å ±ãmake'a圢åŒã«å€æããã«ã¯è¿œå ã®ã¹ã¯ãªãããå¿ èŠã§ããããã«ã¯ãåCãã¡ã€ã«ã§åå¥ã®ã¹ã¯ãªãããå®è¡ããå¿ èŠããããŸããããšãã°ãåãã¡ã€ã«ã®Pythonã€ã³ã¿ãŒããªã¿ãŒãå®è¡ããããšã¯å³æã®æäœã§ã¯ãããŸããã
ã€ã³ã©ã€ã³ã«ãŒã«
makeã«ã¯ã倧éã®çµã¿èŸŒã¿ã«ãŒã«ãå«ãŸããŠããŸãããããã¯å°ããªã¡ã€ã¯ãã¡ã€ã«ã®ã³ãŒããå°ãåçŽåããããšãå¯èœã«ããŸãããéåžžãäžèŠæš¡ããã³å€§èŠæš¡ãªãããžã§ã¯ãã¯ãããããªãŒããŒã©ã€ãããŸãã makeã¯ããã¡ã€ã«ãã³ã³ãã€ã«ããããã®èŠåãèŠã€ããããšãããããã®è¿œå ãã¿ãŒã³ããã¹ãŠèª¿ã¹ãªããã°ãªããªããããããã©ãŒãã³ã¹ã«åœ±é¿ããŸãããããã®å€ãã¯æ代é ãã§ã-ããšãã°ãRSCããã³SCCSã§ã®ç£æ»ã·ã¹ãã ã®äœ¿çšããããã¯å°æ°ã®äººã ã«ãã£ãŠã®ã¿äœ¿çšãããŸããããããã®ã«ãŒã«ã¯ä»ã®ãã¹ãŠã®ãŠãŒã¶ãŒã®ãã¹ãŠã®ã¢ã»ã³ããªãé ãããŸãã
ã³ãã³ãã©ã€ã³ããmake -rã䜿çšããŠç¡å¹ã«ã§ããŸãããããã¯ããã©ã«ãã®åäœã§ã¯ãããŸããã makefileã«ç¹å¥ãªãã£ã¬ã¯ãã£ããè¿œå ããããšã§ããããç¡å¹ã«ã§ããŸããããããããã©ã«ãã§ã¯ãããŸãã-å€ãã®äººããããå¿ããŠããŸãã
ãã®ä»
åã®ã«ããŽãªã«åé¡ãããªããã®ä»ã®ã¡ã€ã¯ããŒãããããŸãã
æ²é»ã¯é
ãšãªãã¯ã»ã¬ã€ã¢ã³ãã«ãããšããæãå€ãäžå€ã®UNIXã®äžçã®èšèšã«ãŒã«ã®1ã€ã¯ãããã°ã©ã ã«èå³æ·±ãããšãäºæ³å€ã®ããšãèšããã®ããªãå Žåãããã¯éãã§ããã¹ãã ãšããããšã§ããè¡åã®è¯ãããã°ã©ã ã¯ãå¿ èŠãªæ³šæãšäžå®ãæå°éã«æããŠãæ§ããã«äœæ¥ãè¡ããŸããæ²é»ã¯éã§ãããmakeã¯ãã®èŠåã«åŸããŸããã
makeãå®è¡ãããšããã°ã«ã¯å®è¡ããããã¹ãŠã®ã³ãã³ããšããããã®ã³ãã³ããstdoutããã³stderrã«äžãããã¹ãŠãå«ãŸããŸããããã¯å€ããããéèŠãªèŠå/ãšã©ãŒã¯ãã®ã¹ããªãŒã ã§ownããããã¹ãã¯ãã°ãã°éåžžã«éã衚瀺ãããããèªã¿ã«ãããªããŸããmake -sã
å®è¡ãããšããã®åºåãå€§å¹ ã«åæžã§ããŸããããããããã¯ããã©ã«ãã®åäœã§ã¯ãããŸããããŸããã³ãã³ãã©ã€ã³ãå ¥åããã«ãmakeãçŸåšäœãããŠãããã衚瀺ããäžéãªãã·ã§ã³ã¯ãããŸããã
å€ç®çã«ãŒã«
äžéšã®ãŠãŒãã£ãªãã£ã¯ãäœæ¥ã®çµæãšããŠè€æ°ã®ãã¡ã€ã«ãçæããŸãããã ããmakeã«ãŒã«ã«ã¯1ã€ã®ç®çãããããŸããããã®ãããªè¿œå ãã¡ã€ã«ã«åå¥ã®äŸåé¢ä¿ãèšè¿°ããããšãããšãmakeã¯2ã€ã®ã«ãŒã«éã®é¢ä¿ãæ€åºã§ããŸããã
ãšã©ãŒã«ãªãã¯ãã®èŠå
makeã¯èŠåãåºåããŸãããåšæçãªäŸåé¢ä¿ãæ€åºããŠãåæ¢ããŸãããããã¯ããããããã¡ã€ã¯ãã¡ã€ã«ã®é倧ãªãšã©ãŒã瀺ããŠããŸãããmakeã¯ãã®ç¶æ³ã軜床ã®è¿·æãšããŠè©äŸ¡ããŸãã
åæ§ã«ãmakeã¯ã1ã€ã®ã¿ãŒã²ãããäœæããæ¹æ³ã説æãã2ã€ã®ã«ãŒã«ãããããšãæ€åºããå ŽåãèŠåãåºåããŸãïŒããã«æ©èœãç¶ããŸãïŒã圌ã¯åã«ãããã®1ã€ãç¡èŠããŸããç¹°ãè¿ããŸãããããã¯makefileã®é倧ãªãã°ã§ãããmakeã¯ããã¯æããŸããã
ãã£ã¬ã¯ããªã®äœæ
ç°ãªãæ§æã®åºåãã¡ã€ã«ãç°ãªããã£ã¬ã¯ããªã«é 眮ãããšéåžžã«äŸ¿å©ã§ããæ§æãå€æŽãããšãã«ãããžã§ã¯ãå šäœãåæ§ç¯ããå¿ èŠã¯ãããŸãããããšãã°ããdebugããã£ã¬ã¯ããªã«ãdebugããã€ããªãé 眮ããåæ§ã«ãreleaseãæ§æã«é 眮ã§ããŸãããã ãããããã®ãã£ã¬ã¯ããªã«ãã¡ã€ã«ãé 眮ããåã«ããã¡ã€ã«ãäœæããå¿ èŠããããŸãã
makeãèªåçã«å®è¡ããå Žåã¯çŽ æŽããããšæããŸã-ãã®ãã£ã¬ã¯ããªããŸã ååšããªãå Žåãã¿ãŒã²ãããæ§ç¯ããããšã¯æããã«äžå¯èœã§ãããmakeã¯ååšããŸãããåã«ãŒã«ã§mkdir -p $ïŒdir $ @ïŒïŒ
ãåŒã³åºãããšã¯ããŸãå®çšçã§ã¯ãããŸãããããã¯éå¹ççã§ããããã«ããã£ã¬ã¯ããªãæ¢ã«ååšããå Žåã¯ãšã©ãŒãç¡èŠããå¿ èŠããããŸãããã®æ¹æ³ã§åé¡ã解決ããããšãã§ããŸãïŒ
debug/%.o: %.c debug $(CC) -c $< -o $@ debug: mkdir $@
å®è¡å¯èœã«èŠããŸã-ãdebugããååšããªãå Žåãdebug / foo.oãã³ã³ãã€ã«ãããåã«äœæããŠãã ãããããããèŠããã ãã§ãããã£ã¬ã¯ããªã«æ°ãããã¡ã€ã«ãäœæãããšããã®ãã£ã¬ã¯ããªã®ãæçµå€æŽæå»ããå€æŽãããŸãã debug / foo.oãšdebug / bar.oã®2ã€ã®ãã¡ã€ã«ãã³ã³ãã€ã«ãããšããŸãã debug / bar.oãäœæãããšããããã°ãã£ã¬ã¯ããªã®å€æŽæéãå€æŽãããŸããããã§ãdebug / foo.oãäœæããããšããããæ°ãããªããŸããã€ãŸãã次ã«makeãåŒã³åºããšãdebug / foo.oãã¡ã€ã«ãäžå¿ èŠã«åã³ã³ãã€ã«ãããŸãããŸããå€ããã¡ã€ã«ãåé€ããŠæ°ãããã¡ã€ã«ãäœæããããšã§ïŒæ¢åã®ãã¡ã€ã«ãäžæžãããã®ã§ã¯ãªãïŒåã³ã³ãã€ã«ãè¡ããšãäžèŠãªåã³ã³ãã€ã«ãç¡éã«ç¹°ãè¿ãããŸãã
解決çã¯ããã£ã¬ã¯ããªã§ã¯ãªããã¡ã€ã«ïŒããšãã°ãdebug / dummy.txtïŒã«äŸåé¢ä¿ãäœæããããšã§ããããã«ã¯ãã¡ã€ã¯ãã¡ã€ã«ïŒtouch debug / dummy.txtïŒã§è¿œå ã®ã¢ã¯ã·ã§ã³ãå¿ èŠã§ãããäžéãã¡ã€ã«ãèªåçã«åé€ããmakeã®æ©èœãšç«¶åããå¯èœæ§ããããŸãããŸããç®æšããšã«ãã®è¿œå ã®äŸåé¢ä¿ïŒdummy.txtïŒãæå®ããããšã«æ³šæããªããšãmakeã䞊è¡ããŠå®è¡ãããšãã«åé¡ãçºçããŸãã
çµè«
Makeã¯å€ãã®æ¬ é¥ããã人æ°ã®ãããŠãŒãã£ãªãã£ã§ããããã¯ããªãã®äººçãç°¡çŽ åãããããããè€éã«ããããšãã§ããŸãã倧èŠæš¡ãªãœãããŠã§ã¢è£œåã«åãçµãã§ããå Žåã¯ãä»ã®éžæè¢ãæ€èšããå¿ èŠããããŸããmakeã®ã¿ã䜿çšããå¿ èŠãããå Žåã¯ããã®æ¬ ç¹ã«æ³šæããå¿ èŠããããŸãã
PSïŒäžèšã®ãã¹ãŠã¯ããã®èšäºã®ç¿»èš³ã§ããé·ãéãç§ã¯åããããã¯ã«é¢ãããããã¯ãæžãã€ããã§ããããèšäºãèªãã åŸãç§ã¯ç¿»èš³ãããæ¹ãè¯ããšæããŸãããèè ã®è°è«ã®ãã¹ãŠããã¡ã€ã¯åºæãïŒããã³ãã®çš®ã®ãŠãŒãã£ãªãã£ãã¹ãŠã«å®å šã«åœãŠã¯ãŸããã®ããããŸãïŒã§ã¯ãããŸããããä»äºã§ããã䜿çšããå¿ èŠããããã¹ãŠã®ããã°ã©ããŒã¯ãç°ãªãã¡ã€ã¯ã¢ããã¬ãŒããç¥ã£ãŠç解ããå¿ èŠããããŸãã