freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

makefile中文完全手冊-資料下載頁

2025-06-29 08:30本頁面
  

【正文】 目標不應該是一個實際目標文件的依賴,如果這樣,make每次執(zhí)行該規(guī)則的命令,目標文件都要更新。只要假想目標不是一個真實目標的依賴,假想目標的命令只有在假想目標作為特別目標時才會執(zhí)行(參閱指定最終目標的參數(shù))。假想目標也可以有依賴。當一個目錄下包含多個程序時,使用假想目標可以方便的在一個makefile文件中描述多個程序的更新。重建的最終目標缺省情況下是makefile文件的第一個規(guī)則的目標,但將多個程序作為假想目標的依賴則可以輕松的完成在一個makefile文件中描述多個程序的更新。如下例:all : prog1 prog2 prog3.PHONY : all![if !supportEmptyParas] ![endif]prog1 : cc o prog1 ![if !supportEmptyParas] ![endif]prog2 : cc o prog2 ![if !supportEmptyParas] ![endif]prog3 : cc o prog3 這樣,您可以重建所有程序,也可以參數(shù)的形式重建其中的一個或多個(如‘make prog1 prog339。)。當一個假想目標是另一個假想目標的依賴,則該假想目標將作為一個假想目標的子例程。例如,這里‘make cleanall39。用來刪除OBJ文件、diff文件和程序文件:.PHONY: cleanall cleanobj cleandiff![if !supportEmptyParas] ![endif]cleanall : cleanobj cleandiff rm program![if !supportEmptyParas] ![endif]cleanobj : rm *.o![if !supportEmptyParas] ![endif]cleandiff : rm *.diff 沒有命令或依賴的規(guī)則如果一個規(guī)則沒有依賴、也沒有命令,而且這個規(guī)則的目標也不是一個存在的文件,則make認為只要該規(guī)則運行,該目標就已被更新。這意味著,所有以這種規(guī)則的目標為依賴的目標,它們的命令將總被執(zhí)行。這里舉一個例子:clean: FORCE rm $(objects)FORCE:這里的目標‘FORCR’滿足上面的特殊條件,所以以其為依賴的目標‘clean’將總強制它的命令執(zhí)行。關于‘FORCR’的名字沒有特別的要求,但‘FORCR’是習慣使用的名字。也許您已經(jīng)明白,使用‘FORCR’的方法和使用假想目標(.PHONY: clean)的結(jié)果一樣,但使用假想目標更具體更靈活有效,由于一些別的版本的make不支持假想目標,所以‘FORCR’出現(xiàn)在許多makefile文件中。參閱假想目標。空目標是一個假想目標變量,它用來控制一些命令的執(zhí)行,這些命令可用來完成一些經(jīng)常需要的具體任務。但又不象真正的假想目標,它的目標文件可以實際存在,但文件的內(nèi)容與此無關,通常情況下,這些文件沒有內(nèi)容??漳繕宋募挠猛臼怯脕碛涗浺?guī)則的命令最后一次執(zhí)行的時間,也是空目標文件最后更改的時間。它之所以能夠這樣執(zhí)行是因為規(guī)則的命令中有一條用于更新目標文件的‘touch’命令。另外,空目標文件應有一些依賴(否則空目標文件沒有存在的意義)。如果空目標比它的依賴舊,當您命令重建空目標文件時,有關的命令才會執(zhí)行。下面有一個例子:print: lpr p $? touch print按照這個規(guī)則,如果任何一個源文件從上次執(zhí)行‘make print39。以來發(fā)生變化,鍵入‘make print39。則執(zhí)行l(wèi)pr命令。自動變量‘$?’用來打印那些發(fā)生變化的文件(參閱自動變量)。 內(nèi)建的特殊目標名一些名字作為目標使用則含有特殊的意義:![if !supportLists]l ![endif].PHONY。假想目標是這樣一些目標,make無條件的執(zhí)行它命令,和目錄下是否存在該文件以及它最后一次更新的時間沒有關系。詳細內(nèi)容參閱假想目標。![if !supportLists]l ![endif].SUFFIXES。詳細內(nèi)容參閱過時的后綴規(guī)則。![if !supportLists]l ![endif].DEFAULT.DEFAULT指定一些命令,這些命令用于那些沒有找到規(guī)則(具體規(guī)則或隱含規(guī)則)更新的目標。詳細內(nèi)容參閱定義最新類型的缺省規(guī)則。,則所有提及到的文件只能作為依賴,而不能作為任何規(guī)則的目標;這些指定的命令也只按照他們自己的方式執(zhí)行。詳細內(nèi)容參閱隱含規(guī)則搜尋算法。![if !supportLists]l ![endif].PRECIOUS:如果在執(zhí)行這些目標的命令的過程中,make被關閉或中斷,這些目標不能被刪除,詳細內(nèi)容參閱關閉和中斷make;如果目標是中間文件,即使它已經(jīng)沒有任何用途也不能被刪除,具體情況和該目標正常完成一樣,參閱隱含規(guī)則鏈;。如果規(guī)則的目標格式與依賴的文件名匹配,您可以使用隱含規(guī)則的格式(如‘%.O’)。![if !supportLists]l ![endif].INTERMEDIATE。詳細內(nèi)容參見隱含規(guī)則鏈。.INTERMEDIATE如果沒有依賴文件,它將不會發(fā)生作用。![if !supportLists]l ![endif].SECONDARY,但它們永遠不能自動刪除。詳細內(nèi)容參見隱含規(guī)則鏈。.SECONDARY如果沒有依賴文件,則所有的makefile文件中的目標都將被處理為中間文件。![if !supportLists]l ![endif].DELETE_ON_ERROR,則如果該規(guī)則發(fā)生變化或它的命令沒有正確完成而退出,make將會刪除該規(guī)則的目標,具體行為和它受到了刪除信號一樣。詳細內(nèi)容參閱命令錯誤。![if !supportLists]l ![endif].IGNORE,則MAKE將會忽略處理這些依賴文件時執(zhí)行命令產(chǎn)生的錯誤。,MAKE將忽略處理所有文件時產(chǎn)生的錯誤。.IGNORE命令并沒有特別的含義,.IGNORE的用途僅是為了和早期版本的兼容。,所以它的用途不大;我們推薦您使用其它方法來忽略特定命令產(chǎn)生的錯誤。詳細內(nèi)容參閱命令錯誤。![if !supportLists]l ![endif].SILENT,則在執(zhí)行之前MAKE將不會回顯重新構(gòu)造文件的命令。,任何命令在執(zhí)行之前都不會打印。.SILENT并沒有特別的含義,其用途僅是為了和早期版本的兼容。我們推薦您使用其它方法來處理那些不打印的命令。詳細內(nèi)容參閱命令回顯。如果您希望所有的命令都不打印,請使用‘s’或‘silent’選項(詳細參閱選項概要)。![if !supportLists]l ![endif].EXPORT_ALL_VARIABLES如該特殊目標簡單的作為一個目標被提及,MAKE將缺省地把所有變量都傳遞到子進程中。參閱使與子MAKE通信的變量。![if !supportLists]l ![endif].NOTPARALLEL,即使給出‘j’選項,make也不使用并行執(zhí)行。但遞歸調(diào)用的make命令仍可并行執(zhí)行()。.NOTPARALLEL的任何依賴都將忽略。任何定義的隱含規(guī)則后綴如果作為目標出現(xiàn)都會視為一個特殊規(guī)則,即使兩個后綴串聯(lián)起來也是如此,例如‘.’。這些目標稱為后綴規(guī)則,這種定義方法是過時的定義隱含規(guī)則的方法(目前仍然廣泛使用的方法)。原則上,如果您要把它分為兩個并把它們加到后綴列表中,任何目標名都可采用這種方法指定。實際上,后綴一般以‘.’開始,因此,這些特別的目標同樣以‘.’開始。具體參閱過時的后綴規(guī)則。 具有多個目標的規(guī)則具有多個目標的規(guī)則等同于寫多條規(guī)則,這些規(guī)則除了目標不同之外,其余部分完全相同。相同的命令應用于所有目標,但命令執(zhí)行的結(jié)果可能有所差異,因此您可以在命令中使用‘$@’分配不同的實際目標名稱。這條規(guī)則同樣意味著所有的目標有相同的依賴。在以下兩種情況下具有多個目標的規(guī)則相當有用:![if !supportLists]l ![endif]您僅僅需要依賴,但不需要任何命令。例如: : 為三個提及的目標文件給出附加的共同依賴。![if !supportLists]l ![endif]所有的目標使用相同的命令。但命令的執(zhí)行結(jié)果未必完全相同,因為自動變量‘$@’可以在重建時指定目標(參閱自動變量)。例如:bigoutput littleoutput : generate $(subst output,$@) $@等同于:bigoutput : generate big bigoutputlittleoutput : generate little littleoutput這里我們假設程序可以產(chǎn)生兩種輸出文件類型:一種給出‘big’,另一種給出‘little’。參閱字符串代替和分析函數(shù),對函數(shù)subst的解釋。如果您喜歡根據(jù)目標變換依賴,象使用變量‘$@’變換命令一樣。您不必使用具有多個目標的規(guī)則,您可以使用靜態(tài)格式規(guī)則。詳細內(nèi)容見下文。 具有多條規(guī)則的目標一個目標文件可以有多個規(guī)則。在所有規(guī)則中提及的依賴都將融合在一個該目標的依賴列表中。如果該目標比任何一個依賴‘舊’,所有的命令將執(zhí)行重建該目標。但如果一條以上的規(guī)則對同一文件給出多條命令,make將使用最后給出的規(guī)則,同時打印錯誤信息。(作為特例,如果文件名以點‘.’開始,不打印出錯信息。這種古怪的行為僅僅是為了和其它版本的make兼容)。您沒有必要這樣編寫您的makefile文件,這正是make給您發(fā)出錯誤信息的原因。一條特別的依賴規(guī)則可以用來立即給多條目標文件提供一些額外的依賴。例如,使用名為‘objects’的變量,該變量包含系統(tǒng)產(chǎn)生的所有輸出文件列表。如果‘’發(fā)生變化所有的輸出文件必須重新編譯,可以采用下列簡單的方法編寫:objects = : : $(objects) : 這些可以自由插入或取出而不影響實際指定的目標文件生成規(guī)則,如果您希望斷斷續(xù)續(xù)的為目標添加依賴,這是非常方便的方法。另外一個添加依賴的方法是定義一個變量,并將該變量作為make命令的參數(shù)使用。詳細內(nèi)容參閱變量重載。例如:extradeps=$(objects) : $(extradeps)命令`make extradeps=39。含義是將‘’作為所有OBJ文件的依賴,如果僅僅輸入‘make’命令則不是這樣。如果沒有具體的規(guī)則為目標的生成指定命令,那么make將搜尋合適的隱含規(guī)則進而確定一些命令來完成生成或重建目標。詳細內(nèi)容參閱使用隱含規(guī)則。 靜態(tài)格式規(guī)則靜態(tài)格式規(guī)則是指定多個目標并能夠根據(jù)每個目標名構(gòu)造對應的依賴名的規(guī)則。靜態(tài)格式規(guī)則在用于多個目標時比平常的規(guī)則更常用,因為目標可以不必有完全相同的依賴;也就是說,這些目標的依賴必須類似,但不必完全相同。 靜態(tài)格式規(guī)則的語法這里是靜態(tài)格式規(guī)則的語法格式:targets ...: targetpattern: deppatterns ... mands ...目標列表指明該規(guī)則應用的目標。目標可以含有通配符,具體使用和平常的目標規(guī)則基本一樣(參閱在文件名中使用通配符)。目標的格式和依賴的格式是說明如何計算每個目標依賴的方法。從匹配目標格式的目標名中依據(jù)格式抽取部分字符串,這部分字符串稱為徑。將徑分配到每一個依賴格式中產(chǎn)生依賴名。每一個格式通常包含字符‘%’。目標格式匹配目標時,‘%’可以匹配目標名中的任何字符串;這部分匹配的字符串稱為徑;剩下的部分必須完全相同。如目標‘’匹配格式‘%.o’,字符串‘foo’稱為徑。而目標‘’和‘’不匹配格式。每個目標的依賴名是使用徑代替各個依賴中的‘%’產(chǎn)生。如,如果一個依賴格式為‘%.c’,把徑‘foo’代替依賴格式中的‘%’生成依賴的文件名‘’。在依賴格式中不包含‘%’也是合法的,此時對所有目標來說,依賴是相同的。在格式規(guī)則中字符‘%’可以用前面加反斜杠‘\’方法引用。引用‘%’的反斜杠也可以由更多的反斜杠引用。引用‘%’、‘\’的反斜杠在和文件名比較或由徑代替它之前從格式中移走。反斜杠不會因為引用‘%’而混亂。如,格式`the\%weird\\%pattern\\39。是`the%weird\39。 加上字符‘%39。,后面再和字符串 ‘pattern\\39。連接。最后的兩個反斜杠由于不能影響任何統(tǒng)配符‘%’所以保持不變。這里有一個例子,它將對應的‘.c’文件編譯成‘’和‘’。objects = ![if !supportEmptyParas] ![endif]all: $(objects)![if !supportEmptyParas] ![endif]$(objects): %.o: %.c $(CC) c $(CFLAGS) $ o $@這里‘$’是自動變量,控制依賴的名稱,‘$@’也是自動變量,掌握目標的名稱。詳細內(nèi)容參閱自動變量。每一個指定目標必須和目標格式匹配,如果不符則產(chǎn)生警告。如果您
點擊復制文檔內(nèi)容
環(huán)評公示相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1