溫馨提示×

makefile如何編譯文件夾下的文件

小億
134
2023-09-12 18:00:34
欄目: 編程語言

在Makefile中,可以使用通配符(wildcard)來獲取文件夾下所有文件的列表,然后使用規(guī)則來編譯這些文件。

以下是一個示例的Makefile,用于編譯文件夾下的所有.c文件:

# 獲取文件夾下所有的.c文件
SRCS := $(wildcard *.c)
# 生成對應(yīng)的目標(biāo)文件列表
OBJS := $(SRCS:.c=.o)
# 目標(biāo)文件
TARGET := myprogram
# 編譯規(guī)則
$(TARGET): $(OBJS)
gcc $^ -o $@
%.o: %.c
gcc -c $< -o $@
.PHONY: clean
clean:
rm -f $(OBJS) $(TARGET)

在這個Makefile中,首先使用通配符$(wildcard *.c)獲取當(dāng)前文件夾下所有的.c文件,并將它們保存到變量SRCS中。然后,通過將.c替換為.o,生成對應(yīng)的目標(biāo)文件列表OBJS。

接下來,定義了兩個規(guī)則。第一個規(guī)則$(TARGET): $(OBJS)表示生成目標(biāo)文件$(TARGET)的依賴是所有的目標(biāo)文件列表$(OBJS)。在規(guī)則的命令中,使用$^表示所有的依賴文件,$@表示目標(biāo)文件,通過gcc命令將目標(biāo)文件鏈接成可執(zhí)行程序。

第二個規(guī)則%.o: %.c表示根據(jù).c文件生成對應(yīng)的目標(biāo)文件。在規(guī)則的命令中,使用$<表示第一個依賴文件,通過gcc命令將.c文件編譯成目標(biāo)文件。

最后,定義了一個偽目標(biāo).PHONY: clean用于清理編譯生成的目標(biāo)文件和可執(zhí)行程序。

要編譯文件夾下的所有文件,只需在命令行中輸入make即可。如果需要清理編譯生成的文件,可以輸入make clean。

0