3.3. Makefile の使用
複数のソースファイルで構成される複雑なプログラムを構築するには、make は Makefile と呼ばれる設定ファイルを使用して、プログラムのコンポーネントをコンパイルし、最終的な実行可能ファイルを構築する方法を制御します。Makefile には、作業ディレクトリーのクリーニング、プログラムファイルのインストールおよびアンインストール、およびその他の操作の指示を含めることもできます。
make は、現在のディレクトリーの GNUmakefile
、makefile
、Makefile
というファイルを自動的に使用します。別のファイル名を指定するには、-f
オプションを使用します。
$ make -f make_file
Makefile 構文の詳細の説明は、本ガイドの対象外です。GNU make、アップストリームの GNU make マニュアルを参照してください。これは、GNU make ユーティリティー、Makefile 構文、その使用方法を詳細に説明しています。
完全な make マニュアルは、インストールの一部として Texinfo 形式でも利用できます。このマニュアルを表示するには、次のコマンドを実行します。
$ scl enable devtoolset-9 'info make'
例3.2 例: Makefile を使用した C プログラムの構築
例3.1「make を使用した C プログラムの構築」 で紹介されている簡単な C プログラムを構築するために Makefile
という名前が付けられた以下の汎用 Makefile について考えてみましょう。Makefile は変数を定義し、ターゲットとレシピで構成される 4 つの ルール を指定します。レシピの行は、TAB 文字で開始する必要があることに注意してください。
CC=gcc CFLAGS=-c -Wall SOURCE=hello.c OBJ=$(SOURCE:.c=.o) EXE=hello all: $(SOURCE) $(EXE) $(EXE): $(OBJ) $(CC) $(OBJ) -o $@ .o: .c $(CC) $(CFLAGS) $< -o $@ clean: rm -rf $(OBJ) $(EXE)
この Makefile を使用して hello.c
プログラムを構築するには、make
ユーティリティーを実行します。
$ scl enable devtoolset-9 'make'
gcc -c -Wall hello.c -o hello.o
gcc hello.o -o hello
これにより、現在の作業ディレクトリーに、新しいオブジェクトファイル hello.o
と新しいバイナリーファイル hello
が作成されます。
作業ディレクトリーを消去するには、以下のコマンドを実行します。
$ scl enable devtoolset-9 'make clean'
rm -rf hello.o hello
これにより、作業ディレクトリーからオブジェクトおよびバイナリーファイルが削除されます。