makefileによるフォルダ配下のファイルのコンパイル方法

Makefileでは、ワイルドカードでフォルダ内のすべてのファイルのリストを取得し、ルールの設定で使用することでそれらのファイルをコンパイルできます。

以下にフォルダ内の全ての.cファイルをコンパイルするためのMakefileのサンプルを示します。

# 获取文件夹下所有的.c文件
SRCS := $(wildcard *.c)
# 生成对应的目标文件列表
OBJS := $(SRCS:.c=.o)
# 目标文件
TARGET := myprogram
# 编译规则
$(TARGET): $(OBJS)
gcc $^ -o $@
%.o: %.c
gcc -c $< -o $@
.PHONY: clean
clean:
rm -f $(OBJS) $(TARGET)

このMakefileでは、まずワイルドカード$(wildcard *.c)を使って、現在のフォルダにあるすべての.cファイルを、変数SRCSに保存しています。その後、.cを.oに置換して、対応するターゲットファイルのリストであるOBJSを作成します。

このとき2つのルールが定義されています。1つ目は$(TARGET): $(OBJS)というルールで、$(TARGET)という目標ファイルを作成するための依存ファイルを$(OBJS)という一覧の目標ファイルとしています。ルールのコマンドには、$^で全ての依存ファイルを参照し、$@で目標ファイルを表現して、gccコマンドを使用して目標ファイルをリンクして実行可能ファイルを作成しています。

2つ目のルール%.o:%.cは、%.cファイルを基にに対応するオブジェクトファイルを生成します。ルールの命令では、$<を使用して最初の依存ファイルを示し、gccコマンドで%.cファイルをオブジェクトファイルに変換します。

最後に、PHONEY: clean を定義してコンパイルが生成したオブジェクトファイルと実行可能ファイルを削除します。

ディレクトリ内のすべてのファイルをコンパイルするには、コマンドラインに「make」と入力してください。コンパイルによって生成されたファイルを削除する場合は、「make clean」と入力できます。

コメントを残す 0

Your email address will not be published. Required fields are marked *


广告
広告は10秒後に閉じます。
bannerAds