目標: 要生成的目標檔案
依賴: 目標檔案由哪些檔案生成
命令: 通過執行該命令由依賴檔案生成目標
# $@ 代表目標
# $^ 代表全部依賴
# $< 第一依賴
# $? 第一變化的依賴
#2020-8-3
# wildcard可以進行檔案匹配
# patsubst 內容的替換
#makefile的變數
# $@ 代表目標
# $^ 代表全部依賴
# $< 第一依賴
# $? 第一變化的依賴
#get all .c files
srcfiles=
$(wildcard *.c)
#all .c files --> .o files
objfiles=
$(patsubst %.c,%.o,$(srcfiles)
)#目標檔案用法$(var)
# gcc前面要用tab鍵,可以用vim敲入
gcc -o $@ -i ./include $(objfiles)
#模式匹配規則,$@,$< 這樣的變數,只能在規則**現
%.o:%.c
gcc -c $< -i./include -o $@
test:
@echo $(srcfiles)
@echo $(objfiles)
#定義偽目標,防止有歧義
.phony:clean all
# "-@rm -f *.o" 減號的作用是當指令報錯的時候依然執行,@的作用是不輸出指令。
clean:
-@rm -f *.o
參考
linux下開發之makefile檔案
Makefile檔案編寫規則
makefile 中包含五種內容 顯式規則,隱式規則,變數定義,指令 directive 和注釋。1.顯式規則 描述如何生成規則的目標,它列出了目標依賴的檔案,指定了產生或更新目標的命令。2.隱式規則 描述如何生成基於檔名的一類檔案,說明目標可能依賴於和其檔名類似的檔案,指定了相應的命令。3.指令 ...
makefile編寫(一)基本規則
一 乙個簡單的例子 建立乙個malefile檔案如下 mian.o main.c a.h gcc c main.c 1.o 1.c a.h b.h gcc c 1.c 2.o 2.c b.h c.h gcc c 2.c 2 3 cc gcc 4 5 debug 6 cflags i.g wall a...
makefile的編寫規則和示例
例一 在乙個demo目錄下有三個目錄 分別是test,include,lib test目錄下有三個目錄,分別是include和source和project,在目錄include下有三個檔案,分別是a.h,b.h,c.h,在source目錄下有三個檔案,分別是a.c,b.c,c.c,project目錄...