LinuxにおけるMakefileの作成方法

Makefileは、ソースコードを管理するツールで、Linuxでコンパイルやリンクなどの処理を自動化するために使われます。ルールと呼ばれる一連のスクリプトからなり、各ルールはソースコードファイルの依存関係と、それに対応するコンパイルやリンクのコマンドを記述しています。

Makefileの簡単な例を次に示します。

# 定义变量
CC = gcc
CFLAGS = -Wall -O2
# 定义目标文件和依赖关系
TARGET = program
OBJS = main.o foo.o bar.o
# 默认目标
all: $(TARGET)
# 生成目标文件
$(TARGET): $(OBJS)
$(CC) $(CFLAGS) -o $@ $^
# 生成.o文件
%.o: %.c
$(CC) $(CFLAGS) -c -o $@ $<
# 清除生成的目标文件
clean:
rm -f $(TARGET) $(OBJS)

Makefileは複数の部分からなります。

  1. 変数の定義:変数を使用すれば、コンパイラーやコンパイルオプションなどのパラメータを簡単に変更できます。
  2. 目標と依存関係:生成対象のファイルとそれらの依存関係の定義
  3. ルール: ターゲットファイルの生成方法を記述。このとき、$(TARGET): $(OBJS) は $(TARGET) が $(OBJS) の中の全てのファイルに依存すること、$(CC) $(CFLAGS) -o $@ $^ は $(CC) コンパイラと $(CFLAGS) コンパイルオプションを使用して $@ ファイルを $^ ファイルから生成することを示しています。
  4. ワイルドカードのルール:ワイルドカードやパターンマッチングを使用して.oファイルを生成します。例えば、%.o: %.cは各.oファイルは同じ名前の.cファイルに依存していることを意味します。
  5. make コマンドの既定で実行されるターゲットを定義します。既定のターゲットは all です。
  6. クリーンルール:生成されたターゲットファイルを削除するためのクリーンルールを定義します。

Linuxターミナルで、Makefileのあるディレクトリに移動して「make」コマンドを実行するだけで、ソースコードの自動コンパイルとリンクが行えます。

Makefileは上記の例以外にも、条件分岐やループ処理、ファイルテンプレートなど、多くの機能と使い方が用意されています。関連したチュートリアルやドキュメントを読むことで、Makefileをより深く理解して活用することができます。

bannerAds