在Linux下,Makefile是一個用來管理源代碼的工具,可以自動化編譯和鏈接過程。它是由一系列規(guī)則組成的腳本,每個規(guī)則描述了源代碼文件的依賴關(guān)系和相應(yīng)的編譯/鏈接命令。
下面是一個簡單的Makefile示例:
# 定義變量
CC = gcc
CFLAGS = -Wall -O2
# 定義目標(biāo)文件和依賴關(guān)系
TARGET = program
OBJS = main.o foo.o bar.o
# 默認(rèn)目標(biāo)
all: $(TARGET)
# 生成目標(biāo)文件
$(TARGET): $(OBJS)
$(CC) $(CFLAGS) -o $@ $^
# 生成.o文件
%.o: %.c
$(CC) $(CFLAGS) -c -o $@ $<
# 清除生成的目標(biāo)文件
clean:
rm -f $(TARGET) $(OBJS)
上述Makefile由多個部分組成:
變量定義:使用變量可以方便地修改編譯器和編譯選項等參數(shù)。
目標(biāo)和依賴關(guān)系:定義要生成的目標(biāo)文件以及它們之間的依賴關(guān)系。
規(guī)則:描述如何生成目標(biāo)文件。其中,$(TARGET): $(OBJS)
表示$(TARGET)
依賴于$(OBJS)
中的所有文件,$(CC) $(CFLAGS) -o $@ $^
表示使用$(CC)
編譯器和$(CFLAGS)
編譯選項來生成目標(biāo)文件。
通配符規(guī)則:使用通配符和模式匹配來生成.o
文件。例如,%.o: %.c
表示每個.o
文件依賴于同名的.c
文件。
默認(rèn)目標(biāo):定義默認(rèn)目標(biāo)all
,即make
命令默認(rèn)執(zhí)行的目標(biāo)。
清理規(guī)則:定義一個clean
規(guī)則,用于刪除生成的目標(biāo)文件。
要使用該Makefile,只需要在Linux終端中進(jìn)入包含該Makefile的目錄,然后執(zhí)行make
命令即可自動編譯和鏈接源代碼。
除了上述示例,Makefile還有很多其他功能和用法,比如條件判斷、循環(huán)、文件模板等??梢酝ㄟ^閱讀相關(guān)的教程和文檔來深入了解和應(yīng)用Makefile。