プログラミングに際し、多数のファイルに分割して管理することが多くある。 大規模なアプリケーションソフトの開発現場では、多人数でソフト開発を行うため1つのファイルでソフトウエアを管理することは不可能になる。 また、一人で開発する場合でも、アプリケーションの機能を細分化して、それぞれを分割して作成するのが普通である。
今回そのような作業での個別のファイル管理をするときに使用するツール 「make」 を、具体例に基づいて紹介してみよう。 取り上げた事例は、「物理の小道」 の 「番外編」 にある「PDF版 物理における微積分学の教科書」 を作成に際に使ったものを取り上げる。 この教科書は、TeX を使って書かれたPDF文書であるので、TeXで書かれたソースリスト(ダウンロード可能です)を、LaTeX でコンパイルし、 dvi ファイルを作り、dviファイルをpdfファイルとする。このような作業手順を一括して記述するのが 「makefile」 である。
この 「makefile」 の記述について数回にわたって紹介する。 まずは、その 「makefile」 がどのようなものなのかを見ていただこう。
#=========================# # TeX Standard Makefile # makefile for TEX # Copyright by H.Takata #=========================# PRO = 微分方程式 # Main Title ORIENT = portrait # sheet layout #ORIENT = horizontal # sheet layout SRC = $(PRO).tex # #---------------------------------------- # Include Files #---------------------------------------- INC1 = $(PRO)-intro.tex INC2 = $(PRO)-base.tex $(PRO)-main.tex $(PRO)-exercise.tex INC3 = $(PRO)-appendix.tex $(PRO).ind #FIG = # Include figure-files #---------------------------------------- .tex.dvi : platex $< .dvi.pdf : dvipdfm $< #--------------------------------------- $(PRO).dvi : $(SRC) $(INC1) $(INC2) $(INC3) $(FIG) makefile -platex $(SRC) $(PRO).pdf : $(PRO).dvi tex-src.pdf dvipdfm $(PRO).dvi $(PRO).ps : $(PRO).dvi dvipsk $(PRO).dvi $(PRO)-src.tex : $(SRC) $(INC1) $(INC2) $(INC3) $(PRO)-version.tex !make -B src tex-src.pdf : $(PRO)-src.tex tex-src.tex makefile !platex tex-src.tex !dvipdfm tex-src.dvi view-dvi : c:\dviout\dviout $(PRO).dvi view-pdf : $(PRO).pdf tex-src.pdf -!acroread $(PRO).pdf view-src : tex-src.pdf !acroread tex-src.pdf view-ps : $(PRO).ps c:\ghostgum\gsview\gsview32 -o $(ORIENT) $(PRO).ps index : mendex -g $(PRO) !make $(PRO).dvi src : !echo %%==========================================%% >$(PRO)-src.tex !echo %% このファイルは自動的に作成されたものです %% >>$(PRO)-src.tex !echo %%==========================================%% >>$(PRO)-src.tex !ftype.bat makefile $(PRO)-src.tex !ftype.bat 微分方程式.tex $(PRO)-src.tex !ftype.bat 微分方程式-intro.tex $(PRO)-src.tex !ftype.bat 微分方程式-base.tex $(PRO)-src.tex !ftype.bat 微分方程式-main.tex $(PRO)-src.tex !ftype.bat 微分方程式-exercise.tex $(PRO)-src.tex !ftype.bat 微分方程式-appendix.tex $(PRO)-src.tex !ftype.bat tex-src.tex $(PRO)-src.tex all : $(PRO).pdf tex-src.pdf -platex $(SRC) # 目次、索引などの相互関係処理のため -mendex $(PRO) # 索引並べ替え処理 -platex $(SRC) # 索引つき文書作成のため -dvipdfm $(PRO).dvi # PDF作成 acroread $(PRO).pdf # PDF閲覧 !make clean # 作業ファイル削除 clean : del $(PRO)*.aux
makefile には更新作業の手順を記載する。分かりにくい記述規則があるので順に説明してみよう。 最初に説明するのは「コメント記述」の記号 # であり、最初にある5行のコメント部分には、タイトル等が書かれている。 その後にも同様の多数のコメント部分があるのがお分かりだろう。
記述について、同じ部分をマクロ記述として、省略形で記述できる。 この部分が7行目の 「PRO = 微分方程式」 という部分だ。この記述以降に現れる 「$(PRO)」 は全て 「微分方程式」 に置き換わるのだ。 これくらいの文字列ならマクロで書かなくても作業上では変わらないのだが、長い文字列では作業上非常に有効となる。
「INC2 = $(PRO)-base.tex $(PRO)-main.tex $(PRO)-exercise.tex」 のマクロなら、「$(INC2)」は「微分方程式-base.tex 微分方程式-main.tex 微分方程式-exercise.tex」 という長い文字列を表している。 このように、マクロの中にマクロを組み込むこともできるのだ。
makefile の記述のうち、コメントとマクロについて紹介した。 実際の更新作業手順を記述している部分は少し分かりにくい。 詳しく紹介するには数回のシリーズになりそうだから、次回に続くことにしよう