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