フリーソフトの小道   

愛用のフリー・ソフト

第34回 ファイル更新管理   「make」   〜 文書更新の自動化ツール 〜

パートA  makefile:  更新手順記述の詳細

 「make」 の作業を記述しているファイルは 「makefile」 であることは前回紹介した。 前回は、コメント、マクロの記述法までを説明したが、今回はファイルの更新作業の管理を詳しく説明することにしよう。 元になるファイルは TeX により記述されたソースファイルである。

texファイルから dviファイルの更新手順

 ソースファイルである 「texファイル」 は latex コマンドで 「dviファイル」 に変換される。 その部分の手順を記述している部分が次の記述に当たる。


.tex.dvi	:
	platex $<


 上の記述方法は暗記するしかないのだが、1行目の 「.tex.dvi :」 は、ファイル名の属性が 「.tex」 を 「.dvi」 に変換する方法を次の行に示しているとの意味だ。 2行目の「   platex %<」 は、行頭の空白(タブ)に意味があり、行頭から書いては不可。 コマンドの最後は空白行である。したがって、この場合は2行目だけを実行することになる。 「%<」 は、ファイル名から属性 「.tex」 を除いたものを意味する。 この2行で、全ての「.tex」が属性につくファイルの更新作業の記述が完了する。

ファイルの依存関係とは

 次に、更新されたファイルが、他のファイルとの依存関係が存在する。今回の場合、「微分方程式.tex」 ファイルがメインファイルであり、 そのファイルに読み込みされるファイル「インクルード・ファイル」が存在する。 どのようなファイルがインクルードされるのかを「微分方程式.tex」のソースファイルから抜き出してみよう。



% 読み込みファイル制御: TEXファイル構成(読み込みファイル群)
\includeonly{
   微分方程式-intro			% はじめに
  ,微分方程式-base			% 第1章 基本編(復習)
  ,微分方程式-main			% 第2章 本編
  ,微分方程式-exercise		% 練習問題
  ,微分方程式-appendix		% 追加資料と練習問題の解答
  ,微分方程式-src			% ソースリスト
}

 TeX ファイルでは、「%」 がコメントの始まりを意味している。 この記述を説明すると、インクルードされるファイルは以下の6つのファイルであることがわかる。

  「微分方程式-intro.tex」、「微分方程式-base.tex」、「微分方程式-main.tex」、「微分方程式-exercise.tex」
  「微分方程式-appendix.tex」、「微分方程式-src.tex」 の6つのファイル

ファイル依存関係を記述する

 6つのファイルがインクルードされる 「微分方程式.tex」 は上の6つのファイルに依存しているということになる。 したがって、読み込まれる6つのファイルのどれかが修正された場合、「微分方程式.tex」を更新処理をする必要が出てくる。 これをファイル依存関係という。この依存関係を記述し、一部の変更でも支障が出ないように更新処理を行うための記述が次のものである。


$(PRO).dvi      : $(SRC) $(INC1) $(INC2) $(INC3) $(FIG) makefile
	-platex $(SRC)


 「$(PRO).dvi」 とは、前回説明したマクロ機能が使われているので、「微分方程式.dvi」 となる。 「微分方程式.dvi」 ファイルは、「.dvi」を作成手順(前述)にしたがって作成される。 この更新処理を発動するかどうかを判断するのがファイルの依存関係である。 1行目のコロンの後に記述されているファイル群が依存関係があるファイルである。 更新されたかどうかの判断は、ファイルにある更新時刻(タイムスタンプ)を比較して判断するのだ。 「微分方程式.dvi」のタイムスタンプと依存ファイル群にある全てのファイルのタイムスタンプを比較して、 依存ファイルのひとつでも、より新しいものがあれば更新処理を発動するという仕組みだ。

 今回まで、makefile の記述のうち、コメント記述、マクロ機能、 ファイルの更新処理手順、ファイルの依存関係の4つの記述について説明してきた。 まだまだ、make コマンドの機能は奥が深い。この続きは、次回に残して置こう。


2006/01/03  管理人(志)


感想・意見は、掲示板、または メールでどうぞ! --- 管理人(志)