Linux Makefile中的規(guī)則如何編寫

小樊
82
2024-09-03 11:49:56

在Linux Makefile中,規(guī)則是用于指定如何生成目標(biāo)文件(target)的一組命令

  1. 目標(biāo)(Target):規(guī)則的目標(biāo)是要生成的文件。通常,這是一個(gè)可執(zhí)行文件、庫文件或者其他類型的輸出文件。

  2. 依賴(Dependencies):規(guī)則的依賴是生成目標(biāo)所需的輸入文件。這些文件可以是源代碼文件、頭文件、其他生成的文件等。

  3. 命令(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.outils.o兩個(gè).o文件。我們還定義了一個(gè)默認(rèn)規(guī)則all,用于生成目標(biāo)文件。此外,我們還定義了一個(gè)用于生成.o文件的模式規(guī)則,以及一個(gè)用于清理生成文件的規(guī)則。

要使用這個(gè)Makefile,只需將其保存為Makefilemakefile,然后在命令行中運(yùn)行make命令。這將根據(jù)Makefile中的規(guī)則生成目標(biāo)文件。

0