プログラミング演習 II B (11/11)


課題7

これから、いままで作ったプログラムを拡張し、 X-Window で表示しマウスで操作できるアプリケーションにしていく。
(とはいっても Xt や Motif は使わず、こんなライブラリ を使う予定。)

まずその前段階として、複数のファイルに分割し make というコマンドで 再コンパイルができるようにしておく。


今回のファイル分割の方針

display.c
print_lights(), input_position() の2つ。
標準入力と標準出力を使用する関数群。

main.c
main() を含む残りの関数。
ゲーム版の操作と全体の制御。 (現段階では標準出力を使用する部分が残っていてもかまわない。)

lights.h
ヘッダファイル。display.c に含まれる関数のプロトタイプ宣言。

Makefile
再コンパイルの手順を記述したファイル。

display.cの作成

main.c から print_lights() と input_position() を抜き出し、 display.c という新しいファイルに移動せよ。

誤ってプログラムを消さないように注意すること。


lights.hの作成

最低限次の内容が書かれていればよい。
/*
 * lights.h
 */

/*------------------------*/
/* functions in display.c */
/*------------------------*/
void print_lights( int lights[5][5] );
void input_position( int *x, int *y );

/* end of file */

lights.hのインクルード

ファイル main.c および display.c の先頭には

#include "lights.h"
という1行を追加せよ。(もちろん stdio.h のインクルードも必要)


Makefileの作成

Makefile というファイル名で 以下のようなファイルを作成せよ。
# Makefile for LIGHTS OUT!

SRCS = main.c display.c
OBJS = $(SRCS:.c=.o)
HDRS = lights.h

main	: $(OBJS)
	$(CC) $(CFLAGS) -o main $(OBJS)

main.o	: main.c $(HDRS)
	$(CC) $(CFLAGS) -c main.c
	
display.o	: display.c $(HDRS)
	$(CC) $(CFLAGS) -c display.c

# end of file

[ make コマンドの詳しい説明 ]

バックアップを取る

念のために tar (テープアーカイブ)というコマンドを使って、 バックアップファイルを作成する。

UNIX Shell で次のコマンドを実行せよ。

コマンド名とオプションを間違えると 逆にファイルが破壊されることがあるので注意せよ。

% tar cvf backup-961111.tar *.c *.h Makefile
ここではファイル名に日付を用いた。 ファイル名を変えながらバックアップを取ると、任意の時点での ファイルの状態に簡単に戻すことができる。

なお、バックアップした内容を確認・復元するには次のコマンドを用いる。

c : create, t : test, x : extract と覚えるとよい。

ファイルのバージョンを管理する RCS というプログラムがある。
これに関しては時間があれば後日解説する。


make の実行

UNIX Shell で make というコマンドを実行せよ。
% make
cc -O -c main.c
cc -O -c display.c
cc -O -o main main.o display.o
のように表示され、main という名前の実行ファイルが正常に 作成されることを確認せよ。

コンパイルが失敗した場合は、エラーメッセージを読んで、 ソースファイルを修正せよ。

正しくコンパイルされたならば、

% ./main
を実行し、同じようにゲームが遊べることを確認せよ。


Takuya NISHIMOTO
Last modified: Mon Jan 27 11:43:49 1997