æ¬é£èŒã§ã¯è€æ°åã«ããããGNU makeãšMakefileã«ã€ããŠåºæ¬çãªæ©èœã説æããŠãããããã§GNU makeãããã³Makefileã®ããšã¯ããªãçè§£ã§ããããã«ãªã£ããšæãããã£ãšèŸŒã¿å ¥ã£ããã¯ããã¯ãããã®ã ãããããã¯äž»ã«ããã°ã©ãã³ã°ã®ãã«ãåŠçã§äœ¿ããããã®ãªã®ã§ãããã§ã¯ããä»¥äžæ·±è¿œãããå¿ èŠã¯ãªãã ãããä»åããã¯æ¬é¡ã§ããããã®Makefileãä»äºã«é©çšããæ¹æ³ãåãäžããŠããã
Makefileãšããžãã¹ãããŒ
Makefileã¯ããšããšã¯ããã°ã©ãã³ã°ã«ããããã«ãåŠçãèšè¿°ããããã®ãã®ã§ãããçŸåšã§ãããã¯ãã®éããªã®ã ãããããŸã§èª¬æããŠããããã«ãMakefileãäœçŸããŠããæŠå¿µãšãããã®ã¯ãã«ãåŠçã«éããããŸããŸãªåŠçã«å¿çšããããšãã§ãããæ¬è³ªçã«ç©äºãæŽçããä»çµã¿ã«åããŠããã
å€ãã®å Žåä»äºã¯é çªã«åŠçãããã®ã ããå Žåã«ãã£ãŠã¯åæãšãªãæ¡ä»¶ãè€æ°ã«ãªãããšããããããããé¢ä¿æ§ã¯Makefileã«æŽçããé¢ä¿æ§ãšåãã ãã¿ã¹ã¯ãMakefileã®ã¿ãŒã²ãããšããŠæŽçããŠããããšã§ãããžãã¹ãããŒããã®ãŸãŸMakefileã«èœãšã蟌ããšãã£ãããšãã§ããã
ãã¡ãããMakefileã«å šãŠãèœãšã蟌ãã§ããã«ã¯ãããçšåºŠããã°ã©ãã³ã°ã®ã¹ãã«ãå¿ èŠã«ãªãã®ã ãããããã£ãç¹ãå«ããŠé·æã«ããã£ãŠåãçµãã§æãããªãä»çµã¿ã§ããããã·ã§ã«ã¹ã¯ãªãããããã°ã©ãã³ã°ã«è©³ãããªãã°ãªãã»ã©ãä»äºã®èªååããããããªãããã ã
ãŸãéã®çºæ³ãšãªãããMakefileã«ããžãã¹ãããŒãèœãšã蟌ãäœ¿ãæ¹ãããŠãããšãä¹ ãã¶ãã«ãã®ä»äºããããšãã«Makefileãèªãããšã§ä»äºã®æé ãå 容ãæãåºãããšãã§ãããèŠããã«Makefileã仿§æžã§ãããæé æžãšããç¶æ ã«ãªãã®ã ãããã¯ããªã广çãªã®ã§ãå§ããããã
äŸãã°ãããªã¢ãããŒã
äžå£ã«ãä»äºããšãã£ãŠãããããšã¯åå·®äžå¥ã ãçµçåŠçãšãã£ãå®åçãªäœæ¥ãããã°ããããžã§ã¯ãããšã«ããšãªãäœæ¥ããããç²åºŠããŸã¡ãŸã¡ã§ã¯ãªãããšæãã
ã©ã®ããã«åãåãããã¯ãã®äººã®ã»ã³ã¹æ¬¡ç¬¬ã ããããçšåºŠåãã®è¯ãåäœã§ä»äºãããã£ã¬ã¯ããªãã«åããããã«ããŠã¿ãããäŸãã°ã~/Documents/ã«ä»äºããšã«ãã£ã¬ã¯ããªãäœã£ãŠããã€ã¡ãŒãžã ã
$ tree Documents
Documents
âââ 瀟ã·ã¹ãã éçºïŒWebïŒ
âââ 瀟ã·ã¹ãã éçºïŒWebïŒ
âââ 瀟ã·ã¹ãã éçšïŒãµãŒãïŒ
âââ 瀟ã·ã¹ãã éçšïŒçµŠäžïŒ
âââ çµçåŠçïŒçµè²»é¢ä¿ïŒ
âââ çµçåŠçïŒå£²äžé¢ä¿ïŒ
âââ åºå€ç°¿
7 directories, 0 files
$
ãããŠããããã®ãã£ã¬ã¯ããªã®äžã«ãŸã1ã€ãMakefileãçšæããããã®Makefileã®å 容ã¯ããããã®æ¥åã«å³ãããã®ã«ããã
äŸãã°æã«1åãçµçåŠçãè¡ãã®ã§ããã°ãããå°çšã®Makefileãäœæãããã¿ãŒã²ããäŸã¯æ¬¡ã®éãã ã
- add: ãã®æã®çµçåŠççšãã£ã¬ã¯ããªãäœæããå¿ èŠãªãã¡ã€ã«ãçšæãããäŸãã°ã202208ããšãã幎æã®ååã®ãã£ã¬ã¯ããªãçšæããããã«çµçåŠçã«å¿ èŠã«ãªãããŒã¿ãªã©ãé 眮ãã
- clean: äžèŠãªããŒã¿ãåé€ããåŠçãæžããŠãã
202208ãã£ã¬ã¯ããªã«ããäœæ¥çšã®Makefileãçšæãããããã¯ãã³ãã¬ãŒããã¡ã€ã«ãçšæããŠãããŠããããã³ããŒããŠäœæããŠãããããincludeãã£ã¬ã¯ãã£ãã§å ±æã®Makefileãèªã¿èŸŒãããã«ããŠãããã䜿ããããæ¹ãéžæããŠããã ãããã
ããããŠçšæããã202208/Makefileãã«ã¯ã次ã®ããã«ã¿ãŒã²ãããçšæããŠãçµçåŠçãè¡ãããã®ããžãã¹ãããŒããªãã¹ããã®ãŸãŸæžããŠããã
- fetch: çµçåŠçã«å¿ èŠã«ãªãããŒã¿ãèªåååŸãŸãã¯èªåçæãã
- edit: åéãããããŒã¿ãããŒã¹ã«ç·šéåŠçãè¡ããããã°ã©ã ã§èªååŠçãããããã¹ãã¬ããã·ãŒãã¢ããªã±ãŒã·ã§ã³ãèµ·åããããWebã¢ããªã±ãŒã·ã§ã³ãåŒã³åºããããã
- report: äœæããããŒã¿ãæåºãããå ±åæžãæåºããã¡ãŒã«ãèªåçæããŠéä¿¡ããããã¡ãŒã«ã¢ããªã±ãŒã·ã§ã³ãèµ·åããããWebãµã€ããèªåæäœããŠèªåéä¿¡ãã
ãããªæãã§æŽçããŠãããšãæ¥åãå€ãã£ãŠãåãæé ã§äœæ¥ãè¡ãããšãã§ãããã身ã«ä»ããèªååã®ã¹ãã«ãã»ãã®æ¥åã«ãå¿çšã§ããã䜿ãã°äœ¿ãã»ã©äœæ¥å¹çãäžãã£ãŠãããããã
çšååŠçãã©ã€ã»ã³ã¹æŽæ°ãŸãã¯è«æ±æžåŠçãªã©ã幎ã«1ïœæ°åããåŠçããªããããªæ¥åãããã£ã¬ã¯ããªãšMakefileã«ãŸãšããŠããããã«ãããšããããšãããšãã«æãåºãæéãçãããšãã§ããããã®ããã«ãMakefileãšããžãã¹ãããŒãã¯ãªããªãã«çžæ§ãè¯ãã
ããããžãã¹ãããŒãMakefileã«èœãšã蟌ãããšãã§ããªããªããããã¯ããããããšåŠçèªäœãé£ããããããããããä»äºãšããŠæŽçã§ããŠããªãå¯èœæ§ããããããããå Žåã¯ãä»äºãã®ãã®ãäžåºŠèŠçŽããŠã¿ãæ¹ããããããããªãã
å®éã«è©ŠããŠã¿ãããŒçµçåŠçç·š
ããããã¯ãå ·äœçãªå®è£ äŸãèŠãŠããããäŸãã°ããæ¥ã ã®å£²äžãæŽçããããšããæ¥åã«ã€ããŠèããããŸããæ¬¡ã®ããã«ãã®ä»äºãã~/Documents/çµçåŠçïŒå£²äžé¢ä¿ïŒããšãããã£ã¬ã¯ããªã§è¡ãããšã«ãããé¢ä¿ãããã¡ã€ã«ã¯ãæåã¯æ¬¡ã®ãããªæãã§çšæããŠããã
$ tree çµçåŠçïŒå£²äžé¢ä¿ïŒ
çµçåŠçïŒå£²äžé¢ä¿ïŒ
âââ Makefile
âââ mk
â âââ base.mk
âââ templates
âââ Makefile
2 directories, 3 files
$
売äžé¢ä¿ã®çµè²»åŠçã¯æ¥åäœã§è¡ã£ãŠãããšããŠãå®éã«äœæ¥ãããšãã«ã¯ã20220801ãã20220802ããšãã£ãå¹Žææ¥ã®ãµããã£ã¬ã¯ããªãäœæããŠããã¡ãã§äœæ¥ãè¡ãããšã«ããããã®ãµããã£ã¬ã¯ããªäœæã®åŠçã¯Makefileã«æžããŠãããæ¬¡ã®ãããªæãã«æžããŠããã°ããã ããã
all: clean
#========================================================================
# æ°èŠäœæ¥ãã£ã¬ã¯ããªã®ã»ããã¢ãã
#========================================================================
add:
dir=$$(date +%Y%m%d); \
\
if [ ! -e $${dir} ]; \
then \
mkdir -p $${dir}; \
cp templates/Makefile \
$${dir}/; \
fi
#========================================================================
# ã¯ãªãŒã³ããã
#========================================================================
clean:
for i in 20*; \
do \
cd $${i}; \
make clean; \
cd ..
done
å¹Žææ¥ã®ãµããã£ã¬ã¯ããªãäœæããããããã«templates/Makefileãã³ããŒããŠãããtemplates/Makefileã¯æ¬¡ã®ãããªå 容ã«ããŠããã
include ./../mk/base.mk
ã€ãŸãããµããã£ã¬ã¯ããªã«çšæããMakefileã®æ¬äœã¯mk/base.mkãšããMakefileã ã
mk/base.mkã®å 容ã¯ã次ã®ãããªæãã«ããŠãã(ä»åã¯ã³ã¡ã³ãã ãã§åŠçã¯çããŠããããå®éã«ã¯ããã«åŠçãæžããŠãã)ã
fetch:
# çµçé¢é£ããŒã¿ã®ååŸåŠç
edit:
# çµçé¢é£ããŒã¿ã®ç·šéåŠç
report:
# äœæããçµçå ±åããŒã¿ãæåºããåŠç
clean:
# äžèŠãªããŒã¿ã®åé€åŠç
æé ã¯æžããŠããéããªã®ã§ãåŸã¯ãcd 20220802; make fetch edit report cleanãã®ããã«å®è¡ããŠãå°ããããŸãŸã«åŠçãé²ããã°ä»äºã¯å®äºãšããããšã«ãªãã
ãã®ã¢ãããŒãã¯ããžãã¹ãããŒãæŽçãããšåæã«ãããã§å©çšããããŒã¿ã«é¢ããŠãæ§é çã«æŽçããç¶æ ãçãŸãããšããå©ç¹ãããããã®ããã«æŽçãããããŒã¿ã¯ãåŸããã¹ã¯ãªãããããã°ã©ã ã䜿ã£ãŠãããã§ãå©çšã§ãããæŽçããŠããã ãã§äŸ¡å€ãããç¶æ ã«ãªãã
䜿ãã®ã¯Makefileã®ã·ã³ãã«ãªåºæ¬æ©èœ
ãã®ã¢ãããŒãã§äœ¿ãMakefileã®æ©èœã¯ã·ã³ãã«ãªãã®ã°ããã ããããŸã§ã«åãäžããŠããæ©èœã¯ããœãŒã¹ã³ãŒãã®ãã«ãåŠçãªã©ã§å¿ èŠãšãããããšãå€ããããããæé ã®æŽçãšãã£ãçšéã§ã¯ããã»ã©äœ¿ããªãããšãå€ãã
ãã ããä»äºã®å 容ã«ãã£ãŠã¯ãã¡ãã䜿ãããšãããããã ãã©ã¡ãããšèšããšã·ã§ã«ã¹ã¯ãªããã®ã¹ãã«ã®æ¹ãéèŠã«ãªã£ãŠããããã«æãã
Makefileèªäœãããªãããã°ã©ãã³ã°å¯ãã®ããŒã«ãªã®ã§ããã®ããŒã«ãããžãã¹ãããŒã®æŽçã«äœ¿ã£ãŠããæ¹ã¯ããã»ã©å€ããªããããããªãããæ¬è³ªçã«ã¯ãããã£ãåŠçã«åããŠããã®ã§ããã²æŽ»çšããŠã¿ãŠããã ãããããããã©ã®ããã«äœ¿ãã°åŠçã®èªååãã§ããããæ¬¡å以éãæ°åã«åããŠåãäžããŠããäºå®ã ã

