フリーソフトの小道   

愛用のフリー・ソフト

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

パートB  makefile:  外部コマンド実行の記述

 「make」 の作業を記述しているファイルは 「makefile」 であることは既に述べてきた。 前回までに、コメント、マクロ、ファイルの更新処理、依存関係についての makefile の記述を説明してきた。 今回は、外部コマンド実行についての説明をしてみたい。

外部コマンドとは?

 外部コマンドとは、DOS上で起動させるプログラム類を言います。makefile から抜き出した次に示す部分を見てみましょう。 この部分は 「src」 を作成する手順を記述したものです。



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


 エクスクラメーション・マーク(!)の次にある 「echo」 がコマンド(MSDOSの内部コマンド)である。 Windows 以前に使われていたOS 「MSDOS」 をご存知の方は良く知っていることだが、Windows しか使ったことがない若い人たちが多くなっているので説明しよう。

 「echo」 コマンドは、コマンドの後ろにつけられた引数を標準出力(コンソール画面に表示する)に流すコマンドである。

 「echo %%====・・略・・====%%」の部分は、「%%====・・略・・====%%」 を標準出力に流すことになる。 その後ろの部分 「>$(PRO)-src.tex」 は、「>」 の部分が標準出力をファイル出力に切り替える(パイプ出力)ことを表している。 よって、$(PRO)-src.tex ファイルを新規に作り、そのファイルの先頭に「%%====・・略・・====%%」 を書き込むことを示す。

 次の行も同様に、「%% このファイルは自動的に作成されたものです %%」 を $(PRO)-src.tex ファイルに書き込むのだが、 「>>」 となっているので、既存のファイルに追加書込むことを示す。

 最初の3行までこのよう処理がなされると、 $(PRO)-src.tex ファイルには、次のような文章が書き込まれる。


%%==========================================%%
%% このファイルは自動的に作成されたものです %%
%%==========================================%%

 4行目のコマンドは、バッチファイルを実行する処理である。 ftype.bat は第1引数のファイルを第2引数のファイルに追加書込みするバッチ処理である。 なお、このとき、ファイル内容を出力する前に、TeX書式での「改ページコマンド」と「ファイル名ほかのタイトル」を出力した後、 ファイル内容をTeX形式となるように形式変換して追加書込みする。 したがって、「ftype.bat makefile $(PRO)-src.tex」 の部分で、makefile のファイルを $(PRO)-src.tex ファイルに追加書込みする。

 今回までで、makefile の記述のほとんどを説明してきた。 まだまだ、make コマンドの機能は奥が深い。制御構造(if−then−else)など説明していない部分もある。 このページを読んで興味を持った人は、より詳しい make の解説書をご覧ください。


2006/01/04  管理人(志)


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