main. 。という特定のファイルを作る方法ではなく、 . c で終る名前のファイルから . c の代わりに . 。を付けたフ ァイルを作成するという一般的なガ去を知っているので す。次に示すのが make コマンドが知っている規則で . C . 0 : ァイルから main. 。というファイルを作成するときに たとえは最初に挙げた例のように、 main. c というフ 成する方法を指定したことになります。 のファイルから .0 というサフィックスのファイルを作 定しています。この例の . c. 0 は、 . c というサフィックス です。この場合もサフィックスを利用して依存関係を指 の . 以降の部分 ) を利用してファイルを生成しているの ル名のサフィックスと呼ばれる部分 ( ファイル名の最後 じつは暗黙の規則の場合は、 make コマンドはファイ ありません。 ト ) は main. 0 で、 . c. 0 などという名前のファイルでは す。この例では、作成したいファイル ( つまりターゲッ いました。今回は、コロンの則に . c . 。と書いてありま コロンの後ろに依存するファイル名を並べて記述して これまでの例では、コロン ( : ) の前にターゲットを、 いくことにしましよう。 異なる方法で解釈されます。まず、この部分からみて この場合、依存関係を指定する部分はこれまでとは $(CC) $(CFLAGS) -c $ く という部分が、 . C . 0 : は、 1 この規則は、 make コマンドごとに異なります。出力ガ去については ( 値は一の。また、特殊マクロとしてくが使われていま は C コンパイラにオプションを渡すためのマクロです CC は C コンパイラを示すマクロ ( 値は (c) 、 CFLAGS ます。 は、前回お話ししたマクロ機能がいくつか使われてい 次は、インストラクションの指定部分です。ここで と解釈されるのです。 maln . 0 : maln . C 132 彳あします。 す。このくは、ソースファイル名 ( この例では mai Ⅱ . 0 ) に展開されます。つまり、さきほどの依存関係の指定の 行を展開した結果、コロンの右側に現れるファイル名に なります。 これらのマクロを展開すると、さきはどの実行例の、 CC ー 0 —C main. C という処理になることがお分かりいただけたでしよう make コマンドの知っていること ここで make コマンドが知っている暗黙の規則や、 前回お話しした make コマンドが知っているすべての マクロをみることにしましよう。これには、 make コ マンドのオプションを使います。前回説明した一 n オプ ションに加え、ここでは一 p と -f というオプションを 使います。 ーⅡは、 make が実際にはコマンドの実行をおこな わないようにするためのオプションでした。今回は make の知っていることを出力するために実行するの で、 make が何かほかのコマンドを実行しないように このオプションを指定します。 -p オプションは、マクロ定義や暗黙の規則を出力さ せるときに指定します。 また一 f オプションは、 Makefile を指定するための ものです。通常、 make コマンドはカレントディレクト リにある MakefiIe を読み込んで処理を開始しますが、 MakefiIe がないとほかのファイルも検索します。 では make コマンド自身が知っている情報を出力した いので、既存の Makefile などから情報を読み込まれて は困ります。したがって、すでに Makefile があると きは、これとは別に中身のない MakefiIe を作り、 オプションを使って指定します。 -f オプションの次に ファイル名を指定するとそのファイルが Makefile の代 わりに用いられます。ファイル名として一が用いられた 場合には、標準入力の内容が MakefiIe として使用され ます。 こでは、中身のないファイルに / dev / Ⅱ u Ⅱを 使うことにしましよう。 これらのオプションはまとめて指定することも可能 で、実際のコマンド行は、次のようになります。 UNIX MAGAZINE 1992.5
DZ—X 流プログラミング は、ファイル名を main. c とします。 % ls maln . C % cat main. C main ( ) printf ("main\n") ; この状態では、ディレクトリにはこのファイル (main. c) しかないものとします。 こで引数に main. 。を指定して make を起動する 今泉貴史 と、 % make malll. 0 CC ー 0 —C ma111. C などと表小され、 Makefile もないのに main. 0 という ファイルか作成されます。 今度は、 main. c のはかに main. 0 ができています。 この状態でもう 1 度 make を実行すると、 make がファ イルの更新状態を調べて、 % make main. 0 maxn. 0, is up tO date. 前々回から、 2 回続けて make コマンドについてお 話ししてきました。 UNIX 上でプログラムを作成する 場合、この make を使うとかなり楽をすることができ ます。基本的な機能やマクロ機能についてはこれまでに ひととおり説明しましたが、今回は、、暗黙の規則 " につ いてお話しします。 と main. 。が最新であることを表示します。 Makefile がないのに、どうして make が使えるので しようか ? しつは make は、 main. c という名則のファ イルから main. 。という名前のファイルを作成する方法 を知っているのです。これが、 make コマンドに備わっ ている暗黙の規則です。 暗黙の規則 暗黙の規則の例 いきなり、、暗黙の規則 " などといわれて、面喰らった 則例では、 main. c というファイルから main. 0 とい 方もいらっしやるかもしれません。そこで、まず例を挙 うファイルを作成しました。いくら Makefile なしにフ げてどのようなことができるのかをみていきましよう。 ァイルが作成できるといっても、ファイル名が main. c ます、簡単な C のソースファイルを 1 つ用意してく から main. 。などと決まっているのでは使いやすいも ださい ( 内容はどんなものでもかまいません ) 。 のとはいえません。そのために、 make は ma ⅲ . c から 131 UNIX MAGAZINE 1992.5
emaCS 入門 hell モー・のサプコマン M-x show—output—from—shell (C-c C-r) M-x kill—output—from—shell (C-c C-O) M-X copy—last—shell—input (C-c C-Y) M-x backward-kill—command (C-c C-w) M-x kill—shell—input (C-c C-u) M-x stop-shell—subjob (C-c C-z) M-x quit-shell-subjob (C-c C-\) M-x interrupt—shell—subjob (C-c C-c) M-x kill—shell—subj ob M-x shell—send-eof (C-c C-d) M-x shell-send-input ( く CR 〉 ) /unixmag/9X-NN 、 VEnet に置いてあるファイル ESHELL VNIX の環境変 explicit—shell—file—name shell—prompt—pattern shell—popd—regexp shell—pushd—regexp shell—cd—regexp Emacs L ド寥数 process-send- string process—send- region Emacs 関数 カレント行の文字列をシェルプロセスに送る シェルプロセスに EOF を送る シェルプロセスに KILL シグナルを送る シェルプロセスに INT シグナルを送る シェルプロセスに QUIT シグナルを送る シェルプロセスに STOP シグナルを送る 入力行を取り消す カーソルの直前の 1 単語を削除する 直前の入力行をコピーする 直前の出力結果の表示を抑制する 直前の出力結果の先頭を表示する 指定したリージョンの内容をシェルプロセスに送る 指定した文字列をシェルプロセスに送る SheII モードでディレクトリを移動するコマンドの正規表現 を設定 SheII モードで pushd にあたるコマンドの正規表現を設定 Shell モードで popd にあたるコマンドの正規表現を設定 シェルのプロンプトの正規表現を設定 シェノレ名を設定 Shell モードで起動するシェル名を設定する環境変数 本誌に掲載したサンフ。ル・プログラムなどのリストです。現 在のところ、倉肝リ号および 1991 年 10 月号 ~ 1992 年 4 月号 に掲載したものが置いてあります。なお、今月号のぶんは 4 月 末に公開します。 /unixmag/index 本誌の肝リ号から 1992 年 3 月号までの総目次です。検索用 の awk スクリプトも置いてあります。 なお、この /unixmag ディレクトリの下にあるファイルは、 ftp.ascii ・ co. jp [ 133.152.32.11 ] から anonymous FTP で ・ scale ・ xtermname /cmd/perl 入手することもできます。 130 ルごとに日氤分割して置いてあります。 サイズの大きなものについては、 compress の下に各ファイ いてあります。 ( 1992 年 3 月号 ) で紹介された RFC のうち、主要なものを置 連載中の「 UNIX Communication Notes 」第 45 回 /doc ASTEC の民田さんカ非った便利な Perl スクリプトです。 / 1 ang ・ Perl 4.019 16 のファイルに分割してあります。 Cnews アーカイプ、圧縮したものを、 10 のファイルに分割してあ ります。現在、「 UNIX Communication Notes 」で埆得見 しています。 ・ X11R5. fixes ・ less jless 97 、 less 177 、 jless 177 の 3 つを置いてあります。 ・ mtools 2.0 ・ nkf 1.4 ・ patch 2.0.12u5 /tex ・ lips3dvi 2.09a util の下に、 3 分割で置いてあります。 ・ Pk300 きわめて大きく 25 分割になっています。 ー運用については今月号の 160 べージと 1992 年 3 月号を参照して ください。 UNIX MAGAZINE 1992.5