Linux---Makefile的使用
2021-11-22 08:05 作者:風(fēng)菩提樹 | 我要投稿
Makefile的用途:在對項目中多個.c文件進行快速編譯
1.一個規(guī)則,2個函數(shù),3個自動變量
2.Makefile編寫規(guī)則
????編譯test.c
????目標(biāo)文件:依賴文件
????終極目標(biāo):終極依賴 ??鏈接
????第一目標(biāo):第一依賴 ??匯編
? ? ? ????(一個tab鍵)腳本命令
test:test.o
(一個tab鍵)gcc test.o -o test
test.o:test.c
(一個tab鍵)gcc -c test.c -o test.o
3.? 兩個函數(shù)
? ? ?Src = $(wildcard *.c)
? ? 找到當(dāng)前目錄下所有后綴為.c的文件賦值給src
????Obj = $(patsubst ?%.c,%.o,$(src))
????把src變量里所有后綴為.c的文件替換成.o
4. 3個自動化變量
????$@ ??規(guī)則中的目標(biāo)
????$< ???規(guī)則命令中,表示第一個依賴條件
????$^ ???規(guī)則命令中,表示所有的依賴條件
5.模式規(guī)則
%.o : %.c
? ? ? ? ?(一個tab鍵)gcc ?-c ??$^ ?-o ?$@
模板一
Src= $(wildcard *.c)
Obj =$(patsubst ?%.c,%,$(src))
CC = gcc
All : $(obj)
% :%.c
(一個tab鍵)$(CC) ?$^ ? -o ?$@
Clean:
(一個tab鍵)-rm ?-rf ?$(obj)
.PHONY:clean All
模板二
TARGET = main
SRCS = $(wildcard *.c)
OBJS = $(patsubst %.c,%.o,$(SRCS))
CC = gcc
$(TARGET):$(OBJS)
(一個tab鍵)$(CC) $(^) -o $(@)
%.o:%.c
(一個tab鍵)$(CC) -c $(^) -o $(@)
clean:
(一個tab鍵)rm $(OBJS) $(TARGET)
標(biāo)簽: