@rm -f *.mp4
include ../makefile.param
在makefile也和c語言一樣有include的用法,include後面跟乙個makefile檔名,其功能和c語言中的include類似,就是把被包含的makefile檔案的內容全部原本的複製到包含檔案中來。
這個用法多用於在乙個專案中有多個makefile,分別在不同的目錄下,這樣我 們可以寫乙個公共makefile,這個makefile中包含一些公共變數的定義,其他目錄下的makefile可以把這個公共makefile檔案包含進去。
src := $(wildcard *.c)
#方式一:定義多行變數
define variable
value
value
endef
#方式二:
variable = value
#方式三:
variable := value
#方式四:
variable += value
#方式五:
variable ?= value
這些定義方式中,按照展開方式不同分為:
變數的引用可以採用兩種方式:
$(variable)
$
一般我們可以使用下面這一句來獲取工作目錄下的所有的.c檔案列表:
$(wildcard *.c)
在makefile規則中,萬用字元會被自動展開。但在變數的定義和函式引用時,萬用字元將失效。這種情況下如果需要萬用字元有效,就需要使用函式wildcard,它的用法是:
$(wildcard pattern...)
在makefile中,它被展開為已經存在的、使用空格分開的、匹配此模式的所有檔案列表。如果不存在任何符合此模式的檔案,函式會忽略模式字元並返回空。
obj := $(src:%.c=%.o)
這裡用到makefile裡的替換引用規則,即用您指定的變數替換另乙個變數。它的標準格式是:
$(var:a=b) 或 $
它的含義是把變數var中的每乙個值結尾用b替換掉a。
%」的意思是匹配零或若干字元,例如:
%.h
表示所有以「.h」結尾的檔案,它是在gunmake的語法層次上的,例如
vpath %.h ../headers
該語句表示,要求make在「../headers」目錄下搜尋所有以「.h」結尾的檔案.
*
是shell所支援的萬用字元,是在shell的語法層次上,*.c
,一般用在shell命令裡面,如:
clean:
rm -f *.o
.phony : clean all
關鍵字.phony
告訴make該目標是「假的」(磁碟上其實沒有clean),這時make為生成這個目標就會將其規則執行一次。.phony
修飾的目標就是只有規則沒有依賴。
表示所有的目標(乙個或者多個目標)
@rm -f $(target)
其中 @ 表示:如果 makefile 檔案中執行的命令前面加了@字元,則不顯示命令本身而只顯示它的結果。 海思vdec的Makefile結構
hisilicon hi35xx sample makefile include makefile.param srcs wildcard c target srcs c compile linux or huaweilite include pwd ostype mak print echo os...
makefile的乙個模板
include i.include i usr local include libxml2 i usr local ssl include i usr local include target agent lib lstdc lrt lpthread lxml2 objs patsubst cpp,...
編寫乙個makefile
什麼是makefile?對於大多數的windows程式設計師來講,makefile可能不是那麼重要,因為windows的ide都為程式設計師做好了這個工作。但是在linux下程式設計,會不會寫makefile,從側面上說明乙個人是否具備完成大型工程的能力。makefile的作用 makefile是用...