在Linux Makefile中,規(guī)則是用于指定如何生成目標(biāo)文件(target)的一組命令
目標(biāo)(Target):規(guī)則的目標(biāo)是要生成的文件。通常,這是一個(gè)可執(zhí)行文件、庫文件或者其他類型的輸出文件。
依賴(Dependencies):規(guī)則的依賴是生成目標(biāo)所需的輸入文件。這些文件可以是源代碼文件、頭文件、其他生成的文件等。
命令(Commands):規(guī)則的命令是用于生成目標(biāo)的一系列shell命令。每個(gè)命令都應(yīng)該以制表符(Tab)開頭。
下面是一個(gè)簡單的Makefile示例,用于編譯一個(gè)C程序:
# 定義編譯器和編譯選項(xiàng)
CC = gcc
CFLAGS = -Wall -g
# 定義目標(biāo)文件和依賴文件
TARGET = my_program
OBJS = main.o utils.o
# 默認(rèn)規(guī)則,用于生成目標(biāo)文件
all: $(TARGET)
# 規(guī)則:生成目標(biāo)文件
$(TARGET): $(OBJS)
$(CC) $(CFLAGS) -o $@ $^
# 規(guī)則:生成.o文件
%.o: %.c
$(CC) $(CFLAGS) -c $< -o $@
# 清理規(guī)則,用于刪除生成的文件
clean:
rm -f $(TARGET) $(OBJS)
在這個(gè)示例中,我們定義了一個(gè)名為my_program
的目標(biāo)文件,它依賴于main.o
和utils.o
兩個(gè).o文件。我們還定義了一個(gè)默認(rèn)規(guī)則all
,用于生成目標(biāo)文件。此外,我們還定義了一個(gè)用于生成.o文件的模式規(guī)則,以及一個(gè)用于清理生成文件的規(guī)則。
要使用這個(gè)Makefile,只需將其保存為Makefile
或makefile
,然后在命令行中運(yùn)行make
命令。這將根據(jù)Makefile中的規(guī)則生成目標(biāo)文件。