UN Ⅸへの招待⑩ Chap1 Chap2 Chap3 Chap4 : cd $@ ; make dummy : dummy すっきりした Make 鼠 e になりました。こて利用して いる $@は、 make ク寺殊マクロと呼び、シェルを起動す る前に make か現在処理しているターゲット名に置き換 えます ( 言岩田は機会を改めて説明します ) 。この Makefile を読み込んだ make は、ますターゲット all を処理する ために、それカ衣存するターゲット Chap1 の処理をお こないます。ターゲット Chap1 は、 ( ターゲット・グ ループとして ) 3 行目に定義されています。 make は、 4 行目の UNIX コマンドを実行しようとします 5 。このと き、 $@には現在のターゲット Chap1 か置き換えられま す。したがって、実行されるコマンドは次のようになり ます。 cd Chap1 ; make この実行か終了すると、 make は all が依存する次の ターゲット Chap2 を処理します。 Chap1 のときと同 じように $@には Chap2 が置き換えられ・・ 、以ード、 Ch 叩 3 、 Chap4 引研兼に処理されて、ターゲット all の 処理カ鮗了します。こうして、それぞれのディレクトリ いう記号について説明します。 最後に、 Makefile のなかに記述できる、、@" と そのほかに知っておきたいこと で目的どおり make か実行されます。 ん。 dummy は、そのための G 以的な ) ターゲットとして言己主してあ これカイ衣存するターゲット名を記しないと、 make がうまく動きませ ます。 Chap1—4 は、ディレクトリ・ファイルとしてすでにあるので、 行されす、 Chap1 を処理する 4 行目の UNIX コマンドの実行に移り ンドの記がありません。したがって、 こでは UNIX コマンドカ疾 ます。ただしターゲット dummy には、それを処理する UNIX コマ 5 . 直寉には、 Chap1 が依存するターゲット、 durnmy" をさきに実行し てみましよう。 その行については画面に表示されなくなります。例を見 のなかに記述する UNIX コマンドの前に@を付けると、 ますが、 @はこの表示を中止する働きをします。 Makefile make では実行する UNIX コマンドか画面に表示され 190 ります。 % cat Makefi1e muhyouJ i : echo 表示されないかな . hyouj i : echo 表示されるかな . % make 表示されないかな . % make hyouj i echo 表示されるかな . 表示されるかな . 最初に実行した make では、 (Makefile のう頁に言当 したターゲット muhyouji カ躾行され ) echo の実行結 果だけが画面表示されています。一方、次のターゲット hyouji を指定して実行した make では、 echo コマンド の行とその実行結果か画面表示されています。 make を実行したとき、実際にどのコマンドか起動さ れているのかを画面で市忍できたほうが安心です。ですか ら、 make の、実行するコマンドを画面表示する " という 機能は、とてもありがたいものです。しかし、 ( 上刎列の echo のように ) コマンドによっては、コマンド行と結果 の両方が表示されると、少々くどく ( あるいは、美しくな いと ) 感しることもあります。そのようなコマンドについ ては、コマンド行のう頁に◎を書いておけはよいのです。 @はその行に記述したコマンドのみ表示しないという 機能をもっていますが、 make では、、実行するコマンドす べてを画面表示しない " という機能もあります。これは、 以下のいすれかのガ去を用います。 ・ MakefiIe のなかに . SILENT: という行を言当する。 ・ make 実行時に -s オプションを指定する。 その様子を見てみましよう。 % cat Makefi1e . SILENT: otameshi : echo どうでしよ、 echo ' 静かですか ? , % make どうでしよ、 静かですか ? % cat MakefiIe . s otameshi : echo どうでしよ、 UNIX MAGAZINE 1994.10
IJN Ⅸへの招待 MaI<efiIe の書き方 坂本文 るのですが、このときに、、両方の財 e. 川 e があります " 今月は、 Makefile の書き方について説明します。前回 という警告メッセージが出ることもあります。たとえば と重複する部分もありますが、復習も兼ねて勉強してくだ SunOS の make では、次のようなメッセージが出力さ れます ( 誌面の都合上、で折り返しています ) 。 % ls Makefi1e makefile % make make : Warning : B0th 'makefile ' and 'Makefi1e' exists その名前 最初は、ファイル名の付け方です。分かりやすくする ために、 Makefile と Makefile に使うファイル名を以下 のように区別して表記することにします。 MakefiIe : ューサーか作成する make への指示を記述し たファイル いすれにしても、 makefile か読み込まれ make が実 Makefi1e 、 makefile : Makefile のファイノレ名 行されます。 M e. 川 e には、どのようなファイル名を付けてもかま makefile のほうか優先して読み込まれるにもかかわ いません。ただし、基本的には Makefi1e か makefile らす、 Makefile に Makefi1e という名前を付けるユー のいすれかです。理由は、偂回も説明したように ) make サーが多いようです。一部のマニュアルやドキュメント が省田に読み込む Makefile の名前だからです。ュー 、、 ls を実行したとき、大文字で始まるファイル名 ザーが ()f オプションの指定なしに ) make を実行する のはうがさきに表示されるので、 Makefi1e のはうが好 と、 make はカレントディレクトリから、 ましい " と書いてあるからかもしれません。 make を使う 1. makefile ときは、ディレクトリのなかにイ乍業に関連する多数のファ 2. Makefi1e イルがあり、ふつう Makefile もそこに置かれています。 Makefile に makefile という名前を付けていると、 ls を の順で MakefiIe を捜します。そしてファイルがみつかる 実行したときに多くのファイル名に埋もれてしまいます。 と、それを MakefiIe として使用します 1 。 このため、多数の関連ファイルを作成する場合には、 (ls カレントディレクトリに makefile と Makefi1e の双 で頁のほうに出力される ) Makefi1e を使うほうが適切 方を作成した場合は、上記の理由から makefile のはう でしよう。 が優う勺に使用されます。 make の不鶤頁 2 によっても異な 冒頭で述べたように、 Makefile には MakefiIe か 1 M 佖ん e 五が SCCS (Source Code ControI System) でノヾー makefile 以外のファイル名を付けることもできます。そ ジョン管理されていた場合、そこから斤の MakefiIe を取り出して利 用す引新皀をもつ make もあります。その際のファイルの検出順序は、 s. makefile 、 makefile 、 s . Makefi1e 、 Makefi1e となります。 2 SystemV 系、 BSD 系、 GNU make など。 184 UNIX MAGAZINE 1994.10
IJN Ⅸへの招待⑩ —rm Main ls Main* % make Main . dVi Main rm: Main. dvi : No rm: Main. 10g: NO rm: Main . aux : NO * * * Error C0de 1 ls Main* Main . tex Main . aux directory directory (ignored) such file or such file or such file or directory .10g Main. aux . dvi Main. 10g make からの表示の、先頭から 5 行目のメッセージ rm Main. dvi Main. 10g Main. aux clean : . IGNORE: % cat Makefi1e す。次の例信忍してください。 す。すると、すべてのエラーが無視されるようになりま の . SILENT と同じように ) MakefiIe のなかに記述しま 朱ターゲット . IGNORE カ硬えます。これは、 ( 前述 が無視されるようになります。もう 1 つの方法として、 実行時に一 i オプションを指定すると、すべてのエラー の 1 つは、 make コマンドの一 i オプションです。 make て make を実行するための機能も提供されています。そ に記述したどんなコマンドがエラーになっても、継続し なった場合のみ make を継続できます。一方、 MakefiIe マイナス記号を使うと、特定のコマンド実行がエラーに ド ls か夫行されています。 (ignored) となっています。そして、 rm の次のコマン に注目してください。工ラーが発生しているが無視する rm: Main. aux: NO such file or directory * * * Error code 1 (ignored) 1s Main* Main . tex と @の使い方はお分かりいただけたでしようか ? と ころで、この 2 つを同時に利用することも可能です。並 べる順番は、一@、 @ーのどちらでもかまいません。 おわりに 今回は、 MakefiIe の言己主方法を説明しました。規則や 注意事項などが中心で、やや退屈だったかもしれません。 お詫びに ( ? ! ) 、ちょっとおもしろい実行例をお見せしま しよう。 % ls aya . C % make aya ・ 0 —C aya . C CC % ls aya . C aya ・ 0 ls Main* % make rm Main . dVi Main . rm: Main . dvi : NO rm: Main. 10g: NO such file or rm : Main . aux : NO * * * Error code 1 ls Main* Main . tex % cat MakefiIe . i clean . (ignored) such file or such file or 10g Main. aux directory directory directory rm Main. dvi Main. 10g Main. aux ls Main* % make —i —f Makefi1e . i rm Main. dvi Main. 10g Main. aux rm : Main. dvi : NO such file or directory rm; Main. 10g: NO such file 0 て directory 192 おや ? カレントディレクトリに Makefile ( あるいはそ れに該当するファイル ) がありません。それなのに、ター ゲット aya. 。を指定して make を実行すると、なにや らコマンドか夫行されています。 make は、 Makefile な しでも実行できるのでしようか ? これは、 make の暗黙のファイルの作成規則などによ るものです。 make のなかで定義されているマクロなど も関係しています。そこで、次回からは、 make のマクロ やファイル作成規則などの言田を紹介します。ではまた。 ( さかもと・あや UNIX MAGAZINE 1994.10
図 1 Makefile とディレクトリ構成 ( 例 ) % pwd /usr/home/husband/aya/Tanoshi-UNIX % ls —R Chap1/ Chap1 : Main . tex Chap2 : Main . tex Makefi1e Chap3 : Main . tex Chap4 : Main . tex Chap2/ Makefi1e sectionl section2 Makefi1e Makefi1e . tex . tex Chap3 / sectionl section3 section4. tex sectionl . tex sectionl . tex . tex .tex Chap4/ section2. tex section2. tex section2. tex LJN Ⅸへの招待 0 Makefi1e section3. tex ドを言当する際は、十分注意してください。 ターケット・クループ UNIX MAGAZINE 1994.10 しようか ? 行すればよいのですから、次のような Makefile はどうで よう。 Chap1 ~ 4 のディレクトリでそれぞれ make を実 Tanoshi-UNIX に置く Makefile の内容を考えてみまし トップのディレクトリ、 /usr/home/husband/aya/ になっているとイ反定します。 ます。ディレクトリとファイル構成は、図 1 に小す状態 ディレクトリで make を実行すればよいようになってい ンパイルするには、各章のディレクトリを含むトップの 完成するようになっています。また、 1 冊全部を一気にコ るので ) その章のコンパイルか了して dvi ファイルが で make を実行すれば、 ( 原稿が I*TEX で言当されてい 章にそれぞれ Make 用 e を用意し、ある章のディレクトリ ごとにディレクトリを用意することにします。そして、各 たとえは、 1 冊の本を作るとしましよう。ここでは、章 く同しものである " といった場合に便利です。 それ異なるが、それを処理する UNIX コマンドはまった びます。ターゲット・グループは、、ターゲットはそれ 可能です。このような言当をターゲット・グループと呼 の左イには、複数のターゲットを並べて言当することも Makefile のなかのターゲットを言当する部分 ( コロン % cat Makefi1e a11 : chapl chap2 chap3 chap4 cd Chap4 chap4 : cd Chap3 chap3 : cd Chap2 chap2 : cd Chap1 chapl : make を実行すると、最初に言己されたターゲット all make make make make グループを利用すると便利です。次の MakefiIe を使うと きないものでしようか。そういう場合には、ターゲット・ 同し (make) です。 Makefile をもうすこし簡潔に言当で 名は異なっているものの、実行する UNIX コマンドは皆 ch 叩 1 ~ 4 のターゲットでは、移動先のディレクトリ することカそきそうです。 す。したがって、この Make 用 e でもどうやら目的を達 クトリにディレクトリが変更さ make が実行されま 処理されます。それぞれのターゲットでは、該当ディレ か実行さこれによってターゲット chapl ~ 4 が偵に a11 : Chap1 Chap2 Chap3 Chap4 % cat Makefi1e 同し処理がおこなえます。 189
に、同じ作業を異なるマシンで処理することなどか挙げ られるでしよう。どのマシンて処理するにしても、同し Makefile を使えれば便利なのですが、 OS の不頁によっ て処理するコマンドが異なることもあります。このような ときには、同じ MakefiIe は利用できません。そこで、 MakefiIe . sun Makefi1e . news などのように機種ごとに MakefiIe を用意します。そし て、次のように機種に合わせて実行します ( あるいは、利 用する Makefile を Makefi1e という名前にリンクした sun——% make —f MakefiIe . sun news—% make —f Makefi1e . news り、コピーするなどのガ去もあります ) 。 こでは、 MakefiIe に言当できる内容について紹介し Makefile と表記します。 を用いました。以降ではとくに区別する必要はないので、 めに、ー a ん師 / e と Makefi1e 、 makefile という表記 前節では、 MakefiIe とそのファイル名を区別するた Makefile に書けること コメント ・ UNIX コマンド ・ターゲット名 ・マクロ定義 ェ打 ・コメント ます。最初に項目を挙げます。 UNIX MAGAZINE 1994.10 の場合は、 -f オプションでファイル名を指定して、次の ように make を実行します。 % make —f Makefi1e 名 シェル・プログラムとい犲兼に、 make でも Makefile 中 が必要な場合が考えられます。たとえは、あるときは これ以外に、 1 つのディレクトリに複数の Makefile makefile をファイル名に使います。 この指定が煩わしいので、通常は MakefiIe か Sun で、またあるときは NEWS で・・ というぐあい LJN Ⅸへの招待⑩ にコメントを書くことができます。 Makefile の内容は、 たいへん複雑になることがよくあります。あとで見たと きに読みやすいように、あるいは他人に MakefiIe を渡し たときに記主内容を簡単に理解してもらえるように、コメ ントをきちんと書く習慣をつけたいものです。 コメントは、シェル・プログラムと同しように # ' の 記号以降に言己します。 make 実行時には、 # から行末ま でがコメントとして解釈されます。 Makefile では、行末 に \ ( バックスラッシュ ) を付ければ次行か継続行とし て扱われます。この機能を利用すれは、 ( 行末までではな く ) 予にもコメントか第当できます。以下の MakefiIe には、 4 行のコメントをしています ( 1 ~ 3 行目と最 終行 ) 。 % cat Makefi1e # 作者 : 坂本文 # この行は、コメントです。 \ では、この行はどうでしょ ? test : echo This is test # これで Makefi1e は終り。 % make echo This is test This is test make で echo コマンドか実行されています。工ラーが 発生したり、警告メッセージカ咄ている様子は見受けら れません。このことからも、う頁の 3 行と最終行はコメ ントとして解釈されたことカ吩かります。 シェル・プログラムでは、プログラム中のどこにでも コメントを記述できますが、 make の場合はどうでしょ う力、 ? MakefiIe のなかには、コメントを当すべきでない場 戸励ゞ 1 つだけあります。それは、ターゲットを処理する ための UNIX コマンドを言当する ( 麪頁がタブ文字て始 まる ) 行です。たとえば、次の 4 ~ 5 行目と 8 ~ 9 行目が それに該当します。 % cat Makefi1e 1 # コメントはどこにでも書ける ? 3 targetl : 2 4 echo こはダメ 185
echo ) 静かですか ? ) % make —s —f Makefi1e . s どうでしよ、 静かですか ? コマンドの表小機能がまったく必要ない場合は、これ らのいすれかを用います。 . SILENT は、 make のなかで 定義されているキ帯未なターゲットの 1 つであり、これに ついては別の機会に言田を説明します。 次に、 MakefiIe のなかに記述できる一 ( マイナス ) 記号について紹介します。 make は、起動した UNIX コ マンドにエラーが発生すると、その時点で ( 残りの UN Ⅸ コマンドを実行せすに ) 終了します。 make でのコマンド 実行は、、、これカ鮗ったら次はあれ " という感しで頂を追 って進めていくのか普通です。ですから、その途中でコマ ンドがうまく実行できなかった場合、 make カ鮗了するの は当然の機能と考えられます。次の例を見てください。 % cat Makefi1e clean: rm Main. dvi Main. 10g Main. aux MEMORY up 0 ADE SPECIALS 各種ワークステーション 拡張メモリ 1 。低価 弊社だからこそできるスペシャル価格サービス。 面倒な社内稟議や予算申請もクリア / 大学・官庁 又は各種研究所でもすぐにお見積もりいたします。 対応機種ラインアップ ( 各種ワークステーション ) Sun Microsystems/ ・ SPARCstation CIasic LC/LX, IPC/IPX/ELC€、 SiIicon Graphics/ IRIS lndigo ( R4000 / 4400 / 3000 ) , IRIS Crimson... ー HewIett- Packard HP / AP01109000 Series, Vectr0386/ 486Series.. COMPAQ/ 0 1s Main* % ls Main* Main . tex % make Main . dVi Main . rm: Main . dvi : No rm: Main. 10g: NO rm: Main . aux: NO * * * Error code 1 10g Main. aux such file such file such file or directory or directory or directory make : Fata1 error : Command failed for target ( clean UNIX MAGAZINE 1994.10 clean: % cat Makefi1e make は継続して次のコマンド実行をおこないます。 ておくと、その行のコマンド実行にエラーが発生しても、 様にコマンド行の知頁に言当します。マイナス記号を書い のときに利用するのがマイナス記号です。これは、 @ と同 次のコマンドを実行できるようにすることも可能です。そ 一方、たとえあるコマンドをうまく実行できなくても、 make は、 ()s コマンドを実行せすに ) 終了しています。 ため、 rm コマンドがエラーになっています。このため Main. {dvi,log,aux} というファイルが存在しない Prosignia, Proliea, Deskpr0286 / 386 / 486.. DEC/ DEC3000ALPHA500AXP,500S, DECsystem5000series... Premmia4/33, 4 / 50 , 4 / 66 , Power Premium4/66d 4 / 33 , Bravo. 読 IB M/ RS6000 POWERserver,station, PS/2 Series.. SONY NEWS 3200 / 3400 / 3700 series... NeXT/Station C010r , Cube Turb0.. Apple/ Macintosh Quadra. 800 / 840 AV / 900 / 950 , Power B00k.. 2 。信新実 おかげさまで大学官庁はじめ各企業等、数多くのユーザー 様へ納めさせていただいております 夂弊社のメモリは国産パソコンメーカーへの OEM 供給を しており、製品には絶対の自信があります。 ( 3 年保証 ) お問い合わせは 0 東京サーキット株式会社 TEL 03-3258 ー 3891 FAX. 03 ー 3258 ー 3890 0 〒 101 東京都千代田区神田須田町 1 ー 5 ー 14 ディアマントビル 6 階 ◎販売代理店募集中 ( お気軽にご連絡下さい。 ) 資料請求 No. OOD 191
UN Ⅸへの招待⑩ いません 4 。次の例を見てください。 % cat makefile otameshi : echO doukana : echo % make echo テスト \ テストだよ。 テスト \ どうだろう \ % make doukana echo どうだろう \ どうだろうね ? ターゲットを処理するための UNIX コマンドは、必 要なだけ言己できます。ただし、 ( 前述したように ) ター ゲットの言己主の終了は、次のターゲットの記述、マクロ 定義、空行のいすれかまでと解釈されます。 UNIX コマ ンドの行と行のあいだに、うつかり空行を置いたりしない ように注意してください。コメントに関しては、ターゲッ トの言己の終了とは解釈されませんから ( 次のように ) 必 要に応して ( 行頭にタブ文字を置かずに ) してもかま いません。 target : ech0 コマンドだよ # 次行も、ターゲット target に関するコマンド echo まだまだコマンド echo これが最後 UNIX コマンドの記述に関する注意点が 1 つありま す。それは、 Makefile の 1 行の記述に対して、、 1 つの シェル " か起動され、そのシェルがコマンドを実行する、 という点です。つまり、次のような Makefile であった 場合、最初の lpr と次の touch コマンドは、それぞれに 起動された ( 異なる ) シェルによって実行されます。 print : Main. dvi lpr —d Main. dvi touch print 4 make のバージョンによっては、 : 麪頁にタブを置かなけオ u まならないも のもあります。 Makefile そのものの不身生を考えると、知頁にタブを置 く貫をつけたほうか望ましいかもしれません。 188 一見、たいしたことではないようですが、シェルに関 係する操作やコマンド ( とくにシェルの組込みコマンドな ど ) を実行するときは、とても重要になります。その典型 が、ディレクトリの変更です。 UNIX の場合、ユーザー のカレントディレクトリの位置は、シェルか管理してい ます。したがって、あるシェルでカレントディレクトリ を変更しても、別なシェルでそれか有効になるわけではあ りません。たとえは、ディレクトリを $HOME/texsrc に 変更し、そこでい TEX を実行しようとして次のような記 述をしても、い TEX は make を起動したディレクトリを カレントディレクトリとして実行されます。 latex: cd $$HOME/texsrc J1atex Main. tex ためしに、 Makefile のなかで cd コマンドを実行して いる様子を見てみましよう。 % cat makefile test : cd pwd % pwd /usr/home/husband/aya/write/lnvt % make cd pwd /usr/home/husband/aya/write/lnvt 最初の cd でホームディレクトリに移動したはすなの に、次の pwd では make 実行時のカレントディレクト リが表示されています。 前述したように、 make は 1 行に言当されたコマンド をそのまま 1 つのシェルに渡すだけです。したがって、 1 行にコマンドを並べて言当するだけでこの間題は角夬で きます。同じ行に複数のコマンドをするには、シェル がそれを別のコマンドであると角物 ( できるように、それぞ れをセミコロンで区切ります。たとえば、次のように言当 します。 latex: cd $$HOME/texsrc jlatex Main. tex これまでも説明したように、シェルに関連するコマン UNIX MAGAZINE 1994.10
IJN Ⅸへの招待⑩ こもダメ echo は 5 6 7 8 9 % cat Makefi1e # コメント こもダメだ こもダメよ echo e ChO targetl : UNIX—command—1 UNIX—command-2 あとで説明しますが、 UNIX コマンドか当されてい る行は、 ( マクロ展開などがおこなわれたあと ) make か ら Bourne シェルに渡されます。このため、これらの行 に言当した # 以降の部分も Bourne シェルに渡されるの UNIX—command—5 0 Bourne シェルでは、 # て始まる行はコメントですか ら、この時点で、、 Makefile へのコメント " としてし MakefiIe の、、見やすさ " もさることながら、ターゲッ た行が Bourne シェルのコメントと解釈されて、実際に トを処理する UNIX コマンドの言当の後ろに空行を置く UNIX コマンドとして実行されることはありません。 と、そこでターゲットの当か終了したと make に解釈 の結果、その行が Makefile へのコメントとして解釈され されるようになります。前号でも紹介しましたが、ター たようにみえますが、実際には、、シェルへのコメント " と ゲットの言当主は次のようにおこないます。 なっているだけなのです。通常、 make で UNIX コマン ターゲット : ターゲット 1 ターゲット 2 ドを実行するときに使われるのは Bourne シェルで、そ UNIX コマンド 1 のほかのシェルを使う場合以外は、あまり気にする必要は ないかもしれません 3 MakefiIe のなかには空行が記述できます。空行は、 MakefiIe を見やすくするために使うの力叝的です。た とえば、 target2 : UNIX—command—3 UNIX-command—4 target3 : ターケットⅣ 0 UNIX コマンドル 打頭がタブ文字ではないコメント行以外の行 " ーー具体 的には、 ・新たなターゲットの言当がおこなわれている行 ・マクロ定義の行 ・エイ丁 を検出したときに、 make はそこまてが 1 つのターゲット 1 UNIX —command— 窈当であると解釈します。空行には、このようにたいせ C ommand ー 2 UNIX- つな彳齬リもあるのです。 command ー 3 UNIX- command— 4 UNIX— ターケットと UNIX コマンド こまでに、 Makefile のなかに言当できるものとして、 ー C ommand— 5 UNIX コメントと空行について説明しました。さて、マクロ定 義、ターゲット名、 UNIX コマンドの 3 つか残っていま という Makefile よりも、次のように言当したはうが見や す。マクロ定義については次回詳しく角見することにしま すくありませんか ? す。ここでは、ターゲットと UNIX コマンドについて説 3 make では、 Bourne シェル以タ V ) シェルも利用できます。たとえば 明します。 C シェルでは、 ( シェル・プログラムのなかに言当された # を除き ) コマ ンド行の # 以降はコメントとして扱いません。したがって、 C シェルを 前回も説明しましたが、 Makefile のなかには、特定 用いた場合、 UNIX コマンドを記する行へコメントを書くと、エラー の仕事の名前として、あるいは ( ターゲットを処理する になる場第あります。 % cat Makefi1e # コメント target 1 : target2 : target3 : UNIX MAGAZINE 1994.10 186
UNIX コマンドの実行結果として作成・更新される ) イルの名前としてターゲット名を記述します。これには、 次のように ( コロン ) を続けます。コロンの前後には、 空白があってもなくてもかまいません。 ファ せん ) 。依存するターゲット名はそれぞれ空白で区切り、 す ( もちろん、不必要であれば何もしなくてかまいま ゲット名 ( あるいはファイル名 ) を必要なだけ記できま コロンの右側には、このターゲットが依存する別のター 次のように言当します。 ターケット : ターケット 1 ターゲット 2 ターゲットル make は、この、、ターゲット " がファイルとして実際に あれば、ターゲット 1 ~ ルのそれぞれのファイルと更新日 時を上交し、ターゲットより更新日時か新しいファイルが 1 つでもあると、ターゲットを作成・更新するための ( 次 行以降に言された ) UNIX コマンドを実行します。ファ イルとして存在しない ( たんにイ士事の名前としてされ ていた ) 場合は、ターゲット 1 ~ ルの仕事を順に片づけ、 そのあとにターゲットを処理する UNIX コマンドを実行 します。この場合、ターゲット 1 ~ ルは、同 bMakefile で定義されていなけれはなりません。あるいは、 make の ファイル作成規則 ( 1994 年 9 月号参照 ) により、それが ファイルとして作成・更新されるものでなければなりませ ん。この言己主方法は、前号て紹介した make の機能に大 きく里した部分です。 UNIX MAGAZINE 1994.10 ・ Main. dvi をプリントアウトする (print)o ・ Main. tex をコンノヾイルする (latex)o (edit)o I*TEX のソースファイル Main. tex を編集する 理をおこなうターゲット名です。 ゲット all の記述を考えてみましよう。括弧内はその処 例として、次の 4 つのターゲットをすべて実行するター ければならないものから言己していく必要があります。 のターゲットを処理します。したがって、さきに処理しな make は、コロンの後ろに言当されている順番でそれぞれ 側に並べるターゲットの順番には多少の注意が必要です。 ターゲットカイ衣存するターゲット、すなわちコロンの右 IJN Ⅸへの招待⑩ 通常、ソースの編集はコンパイルの前におこなうので、 edit は latex の前に置きます。最新の内容をプリントア ウトするためには、コンパイル後の . dvi を出力します。 したがって、 print は latex の後ろに置きます。 clean は、 IATEX が作成するファイルを帚するターゲットで す。このターゲットを、たとえ tiprint の前に置くと、 (. dvi か鞘えてしまうので ) print か夫行できなくなりま す。ですから、 clean は一番最後に置きます。このような 理由から、 all は次のように言当するのが最適と考えられ ます。 a11 : edit latex print clean この場合のように、ターゲットを並べる順番にはちょっ とした注意が必要です。 次に、ターゲットを処理するための UNIX コマンドの 日当方法をみてみましよう。これは、次のいすれかの形 式を用いて言当します。 【形式 1 】 くタブ文字 >UNIX コマンド 2 つの形式の違いは、ターゲットの行に UNIX コマン ドを記述するかしないかということだけです。記述する 場合は、形式 1 のようにターゲットが依存するターゲッ " ( セミコロン ) を置き、その後ろに UN Ⅸ トの後ろに コマンドを言当します。通常、形式 1 を使った MakefiIe はあまり見かけません。読みやすいことからでしようか、 形式 2 を使うューサーが多いようです。 UNIX コマンドが 1 行に書ききれない場合は、行末に バックスラッシュを付けて、次行を継続行にできます。 の場合、予の頁にはタブを置いても置かなくてもかま ・ Main ・ {aux,dvi,log} の 3 つのファイルを削除する ( clean) 。 UNIX コマンド 【形式 2 】 くタブ文字 >UNIX コマンド くタブ文字 > UNIX コマンド 187
等既すに工を工信 : 信等を工信工信勢す島号 : 物等を信 : 第号第信 3 ロ第 3 工第 : 信勢第エ信等 , 工す ・今月の * . sources. * タイジェスト Newsgroups: alt. sources Subject: ulx-proxyarpd: a proxy ARP daemon for Ultrix 4. x Message-lD. く 32d75t$st2@opine.cs.umass.edu 〉 作者 Matt Kimmel さん DEC の ULTRIX 4. x 用の proxyarpd です。 proxy ARP というのは、サプネットをサポートしていない機器 でも、同一ネットワーク・アドレスをもった別のサプネッ トにある機器と通信できるようにするためのものです。 TCP/IP にサプネットが導入されたのは 1985 ~ 1986 年頃ですから、すでに 8 ~ 9 年以前になります。それで もいまだにサプネットをサポートしていない機器が使わ れているということです 現在、次世代の TCP/IP カ鯛発されていて、数年後 にはそれに移行することになっています。ただしこの場 合でも、なんらかの手段で現在の TCP/IP も同時に使 えるようにして、徐々に新しいものに変えていくことに なるでしよう。しかし、いまだに proxyarpd のような コマンドが必要なことから想像すると、しばらくのあいだ は新しい TCP/IP に移行しないで、旧い TCP/IP を使 い続けるケースもかなり多いのではないでしようか。 Newsgroups: comp. sources. mISC Sub. 」 ect: V44i001 : rocat ー Roman Catacombs BBS System v. 0.75 Message-lD. く csm-v44iOOI=rocat.120137@SPa「kY.st erling.com 作者 Greg Shaw さん PC/AT 互換機用のフリーの UNIX である Linux 上 で動く BBS ( 電子掲示板システム ) ソフトウェアです。 Linux 用ですが、 POSIX 準拠の OS であれはくそう フリーの BBS ソフトウェアは、 UNIX 、 MS-DOS ともに頁発表されていますが、 PC 上でマルチタスク OS の UNIX か動くようになった現在、そ窈罸生を活か した本格的な BBS を自宅でも安価に運用できるように なったというわけです。 しかし、なかなかすごいネーミングですれ Newsgroups: comp. sources. unIX Subject: V28i094 : cook - a file construction tool, VI. 6 Message-ID. く 1.775008949.28543@gw.home.v ⅸ . co 作者 . Peter MiIIer さん make と同様に、ファイルの依存関係を調べて更辛芋 刻をチェックし、自重加勺に再コンパイルや重のコマンド を実行するシステムです。 make にくらべて、よりプログラミング言語に近いかた ちて依存関係の規則カ当でき、作友対象として各種のパ ターンを指定できます。 make よりも柔生があるので、 うまく使えは簡単に各種の言語のソースコード、 troff や nroffs TbX/I*TbX などのソースファイルの管理がおこ なえるでしよう。 なお、 make から容易に移行できるように、 Makefile を cook の規則ファイルに変換する make2cook コマン ドも用意されています。 Newsgroups.• comp. sources. X Subject: V22i093 : sp ー XIib based paint program Message-l D. <csx-v22i093=sp.1042119SParkY. Sterli ng. COM 〉 作者知念賢一さん X ウインドウ用の簡易描画ツールです。使い方は簡単 で、ひととおり必要なことはできますが、簡単に使えるだ けにもっと機能がはしいと感してしまいます。 マウスの簡単な操作だけで、画面に表示されているは かのウインドウをイメージ画像として取り込んだり、は かのウインドウの色を使うことができるなど、気の利い た機能もあります。 同しような描画ツールは数種類公開されていますが、 作図ツールと同様、使える機能や個人の好みで使い分け ているのでしよう。丘の WWW サーバーの公開プー ムで、よりきれいで合好のよいロコアイコンを作りたい と考えている人が多いようで、この手のツールは今後ます ます要求か高くなるのではないでしようか。 ちなみに、 sp とは "SENBEI paint" の略だそうで す。作者は奈良先立醤斗 ! 物支術大完大学の人だけあって、 鹿センべイからヒントを得たのでしようか ? これもまた、 なかなかのネーミングですね。 信工信第信生号工信信 : 信第第第信詩第工勢工第信号勢第信第第信第信信第信 0 第信 3 信第霊信信第信 3 第信す 162 UNIX MAGAZINE 1994.10