makefile の作成 ========================================= -------------------- -------------------------------------------------- VectorSampleMain.cpp main() メソッドを持った C++ ファイル Employee.h Employee クラスのヘッダー・ファイル Employee.cpp Employee クラスの実装ファイル -------------------- -------------------------------------------------- このとき、bcc32 コマンドを直接打つのではなく、makefile を作成して、コンパイル / リンク の作業を効率的に行います。 ・「依存元 : 依存先」により、依存先を変更したときは、依存元に影響が出ることをあらわします。このとき、このつぎの行に書いてあるコマンドを実行します。 ・コマンドは必ず タブ を使って字下げしなければなりません。 ■ 単純な makefile (makefile-simple.txt を参照) --- VectorSampleMain.cpp、Employee.cpp、Employee.h の 3 つのファイルから VectorSampleMain.exe を作る例です。 シンプル版 --- CC = bcc32 VectorSampleMain.exe : VectorSampleMain.obj Employee.obj $(CC) VectorSampleMain.obj Employee.obj VectorSampleMain.obj : VectorSampleMain.cpp $(CC) -c VectorSampleMain.cpp Employee.obj : Employee.cpp $(CC) -c Employee.cpp Employee.cpp : Employee.h clean : rm VectorSampleMain.exe *.obj --- ■ 汎用性のある makefile (makefile.txt を参照) 上記の makefile を汎用的に使えるようにします。 --- .SUFFIXES: .cpp .obj .h # makefile 中で使う拡張子を設定 CC = bcc32 # コンパイラーの指定 CFLAGS = # コンパイル・オプション LDFLAGS = # リンク・オプション INCLUDES = # コンパイル時のライブラリーの指定 LIBS = # リンク・ライブラリーの指定 TARGET = VectorSampleMain.exe OBJS = VectorSampleMain.obj Employee.obj $(TARGET) : $(OBJS) $(CC) $(OBJS) $(LIBS) .cpp.obj: # 拡張子.cpp のファイルが変更されたら、 # 拡張子.obj のファイルを作成する $(CC) -c $(CFLAGS) $(INCLUDES) $< .h.cpp : clean : rm $(TARGET) $(OBJS) --- ■ コンパイル / リンク / 実行 > make > VectorSampleMain ■ 依存元による作成 つぎのコマンドにより、Employee.obj のみを作成することができます。 > make Employee.obj ■ ファイルの削除 > make clean 以上