"include"指示符告訴 make 暫停讀取當(dāng)前的 Makefile辫狼,而轉(zhuǎn)去讀取"include"指定的一個(gè)或者多個(gè)文件些阅,完成以后再繼續(xù)當(dāng)前 Makefile 的讀取。
為什么要include其他文件呢?
- 對(duì)于一些通用的變量定義、通用規(guī)則歧匈,寫在一個(gè)文件中,任意目錄結(jié)構(gòu)中的makefile想要使用這些通用的變量或規(guī)則時(shí)砰嘁,include指定的文件就好了件炉,而不用在每個(gè)makefile中又重寫一遍。
- 對(duì)于源文件自動(dòng)生成依賴文件(makefile之目錄搜索&自動(dòng)依賴)時(shí)矮湘,將這些個(gè)依賴關(guān)系保存成文件斟冕,在需要使用時(shí)include進(jìn)來,這樣少了人為的干預(yù)缅阳,同時(shí)也減少的錯(cuò)誤的發(fā)生磕蛇。
include是怎樣進(jìn)行搜索的?
如果在當(dāng)前目錄下或者指定的絕對(duì)路徑找不到目標(biāo)文件,make將根據(jù)文件名進(jìn)行查找:
a. 查找使用命令行選項(xiàng) "-I" 指定的目錄;
b. "/usr/gnu/include","/usr/local/include","/usr/include",如果這些目錄存在的話;
當(dāng)在這些目錄下都沒有找到“include”指定的文件時(shí),make將會(huì)提示一個(gè)包含文件未找到的告警提示,但是不會(huì)立刻退出十办。而是繼續(xù)處理Makefile的后續(xù)內(nèi)容秀撇。當(dāng)完成讀取整個(gè)Makefile后,make將試圖使用規(guī)則來創(chuàng)建通過指示符“include”指定的但未
找到的文件,當(dāng)不能創(chuàng)建它時(shí)(沒有創(chuàng)建這個(gè)文件的規(guī)則),make將提示致命錯(cuò)誤并退出。
有時(shí)候向族,當(dāng)被include的文件不重要時(shí),也就是說是否include了呵燕,沒太大關(guān)系,那么可以在include前加"-"件相,表示忽略該錯(cuò)誤再扭。
-include FILENAMES...
使用這種方式時(shí),當(dāng)所要包含的文件不存在時(shí)不會(huì)有錯(cuò)誤提示夜矗、make也不會(huì)退出泛范。