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

正文內(nèi)容

makefile中文完全手冊-wenkub.com

2025-06-26 08:30 本頁面
   

【正文】 每一個指定目標必須和目標格式匹配,如果不符則產(chǎn)生警告。最后的兩個反斜杠由于不能影響任何統(tǒng)配符‘%’所以保持不變。是`the%weird\39。引用‘%’的反斜杠也可以由更多的反斜杠引用。每個目標的依賴名是使用徑代替各個依賴中的‘%’產(chǎn)生。每一個格式通常包含字符‘%’。目標可以含有通配符,具體使用和平常的目標規(guī)則基本一樣(參閱在文件名中使用通配符)。詳細內(nèi)容參閱使用隱含規(guī)則。詳細內(nèi)容參閱變量重載。一條特別的依賴規(guī)則可以用來立即給多條目標文件提供一些額外的依賴。但如果一條以上的規(guī)則對同一文件給出多條命令,make將使用最后給出的規(guī)則,同時打印錯誤信息。詳細內(nèi)容見下文。例如:bigoutput littleoutput : generate $(subst output,$) $等同于:bigoutput : generate big bigoutputlittleoutput : generate little littleoutput這里我們假設(shè)程序可以產(chǎn)生兩種輸出文件類型:一種給出‘big’,另一種給出‘little’。在以下兩種情況下具有多個目標的規(guī)則相當有用:![if !supportLists]l ![endif]您僅僅需要依賴,但不需要任何命令。具體參閱過時的后綴規(guī)則。任何定義的隱含規(guī)則后綴如果作為目標出現(xiàn)都會視為一個特殊規(guī)則,即使兩個后綴串聯(lián)起來也是如此,例如‘.’。參閱使與子MAKE通信的變量。我們推薦您使用其它方法來處理那些不打印的命令。詳細內(nèi)容參閱命令錯誤。![if !supportLists]l ![endif].IGNORE,則MAKE將會忽略處理這些依賴文件時執(zhí)行命令產(chǎn)生的錯誤。詳細內(nèi)容參見隱含規(guī)則鏈。![if !supportLists]l ![endif].INTERMEDIATE。則所有提及到的文件只能作為依賴,而不能作為任何規(guī)則的目標;這些指定的命令也只按照他們自己的方式執(zhí)行。![if !supportLists]l ![endif].SUFFIXES。自動變量‘$?’用來打印那些發(fā)生變化的文件(參閱自動變量)。如果空目標比它的依賴舊,當您命令重建空目標文件時,有關(guān)的命令才會執(zhí)行。但又不象真正的假想目標,它的目標文件可以實際存在,但文件的內(nèi)容與此無關(guān),通常情況下,這些文件沒有內(nèi)容。關(guān)于‘FORCR’的名字沒有特別的要求,但‘FORCR’是習慣使用的名字。例如,這里‘make cleanall39。重建的最終目標缺省情況下是makefile文件的第一個規(guī)則的目標,但將多個程序作為假想目標的依賴則可以輕松的完成在一個makefile文件中描述多個程序的更新。一個假想目標不應該是一個實際目標文件的依賴,如果這樣,make每次執(zhí)行該規(guī)則的命令,目標文件都要更新。 \ done但使用這個方法存在下述問題:首先,這個規(guī)則在創(chuàng)建子目錄時產(chǎn)生的任何錯誤都不及時發(fā)現(xiàn),因此,當一個子目錄創(chuàng)建失敗時,該規(guī)則仍然會繼續(xù)創(chuàng)建剩余的子目錄。這是把一個目標聲明為假想目標可以提高執(zhí)行效率的原因,因此使用假想目標您不用擔心在目錄下是否有實際文件存在。假想目標能夠終止任何在目錄下創(chuàng)建名為‘clean’的文件工作。如果您寫一個其命令不創(chuàng)建目標文件的規(guī)則,一旦由于重建而提及該目標,則該規(guī)則的命令就會執(zhí)行。該值對前面描述的缺省行為提供支持。文件,這個變量值中的每一個字都是一個字符串格式。的庫文件,則:foo : lcurses cc $^ o $如果‘foo’比‘’更舊,將導致命令‘cc /usr/lib/ o foo39。如果沒有搜尋到‘39。, 和 ‘prefix/lib39。 連接庫的搜尋目錄對于連接庫文件,目錄搜尋采用一種特別的方式。參閱隱含規(guī)則使用的變量。借助諸如‘$^’的自動變量可更好的使用shell命令(參閱自動變量)。GPATH變量和VPATH變量具有相同的語法和格式。簡而言之,如果make要重建目標,是在makefile文件所在的目錄下重建目標,而不是在目錄搜尋時所得到的文件的路徑下。![if !supportLists]![endif]所有該目標的依賴用相同的方法考察。最后‘blish39。最后`bar39。Make按它們在makefile文件中出現(xiàn)的次序控制多個vpath指令,多個指令雖然有相同的格式,但它們是相互獨立的。如果反斜杠所引用的字符‘%’沒有錯誤,則該反斜杠不會運行帶來任何危害。如果不使用‘%’,格式必須與依賴精確匹配,這種情況很少使用。vpath清除所有前面由vapth指令指定的搜尋路徑。這樣您就可以對一種格式類型的文件名指定一個搜尋路徑,對另外格式類型的文件名指定另外一個搜尋路徑。例如: VPATH = src:../headers指定了兩個目錄,‘src’和‘…/headers’,make也按照這個次序進行搜尋。參閱編寫搜尋目錄的shell命令。 VPATH:所有依賴的搜尋路徑make變量VPATH的值指定了make搜尋的目錄。 ‘:=’是‘=’的變異,對‘:=’的解釋,參閱兩種風格的變量。如果沒有和指定格式一致的文件,則函數(shù)wildcard的輸出將會省略。但是這種對反斜杠的支持不包括通配符擴展,因為通配符擴展時,反斜杠用作引用字符。實際上,使用通配符獲得正確的結(jié)果是可能的,但您必須使用稍微復雜一點的技術(shù),該技術(shù)包括使用函數(shù)wildcard和替代字符串等。假設(shè)可執(zhí)行文件‘foo’由在當前目錄的所有OBJ文件創(chuàng)建,其規(guī)則如下:objects = *.o![if !supportEmptyParas] ![endif]foo : $(objects) cc o foo $(CFLAGS) $(objects)由于變量objects的值為字符串‘*.o’,通配符在目標‘foo’的規(guī)則下擴展,所以每一個OBJ文件都會變?yōu)槟繕恕甪oo’的依賴,并在必要時重新編譯自己。當您定義一個變量時通配符不會擴展,如果您這樣寫:objects = *.o變量objects的值實際就是字符串‘*.o’。如‘foo\*bar’表示一個特定的文件其名字由‘foo’、‘*’和‘bar’構(gòu)成。在一些操作系統(tǒng)(如msdos,mswindows)中不存在home目錄,可以通過設(shè)置環(huán)境變量home來模擬。字符‘~’在文件名的前面也有特殊的含義。參閱在規(guī)則中使用命令。一個目標如果不存在或它比其中一個依賴的修改時間早,則該目標已經(jīng)過時。您可以把一長行在中間插入‘\’使其分為兩行,也就是說,一行的尾部是’\’的話,表示下一行是本行的繼續(xù)行。一般情況下,一條規(guī)則只有一個目標,但偶爾由于其它原因一條規(guī)則有多個目標(參閱具有多個目標的規(guī)則)。參閱指定最終目標的參數(shù)。缺省最終目標是makefile文件中的第一條規(guī)則的目標。4編寫規(guī)則makefile文件中的規(guī)則是用來說明何時以及怎樣重建特定文件的,這些特定的文件稱為該規(guī)則的目標(通常情況下,每個規(guī)則只有一個目標)。定義規(guī)則規(guī)則不論其形式如何,都按相同的方式擴展。您可能對這一部分內(nèi)容不熟悉。下面我們將對makefile文件中不同結(jié)構(gòu)的擴展方式進行總結(jié)。 make讀取makefile文件的過程GNU make把它的工作明顯的分為兩個階段。對其它‘GNUmakefile’不提供怎樣更新的目標make也會同樣處理。例如:如果您有一個說明怎樣創(chuàng)建目標‘foo’(和其它目標)的makefile文件稱為‘Makefile’,您可以編寫另外一個稱為‘GNUmakefile’的makefile文件包含以下語句:foo: frobnicate foo![if !supportEmptyParas] ![endif]%: force $(MAKE) f Makefile $force: 。 重載其它makefile文件有時一個makefile文件和另一個makefile文件相近也是很有用的。如果這樣,您可以在makefile文件命令行中將需要更新的makefile文件指定為目標,如此則可阻止更新makefile文件。 (或 ‘justprint39。因為即使您使用‘t’特別指定,‘t’或‘touch’選項對更新makefile文件不產(chǎn)生任何影響, makefile文件仍然會更新,所以當您使用‘t’或‘touch’選項時,您不要使用過時的makefile文件來決定‘touch’哪個目標(具體含義參閱代替執(zhí)行命令)。不象使用‘f’或‘file’選項指定具體的makefile文件,這時make不能確定makefile文件是否存在。如果在makefile文件中指定依據(jù)雙冒號規(guī)則使用命令重建一個文件,但沒有提供依賴,則一旦make運行就會重建該文件(詳細內(nèi)容參見雙冒號規(guī)則)。在所有的makefile文件檢查之后,如果發(fā)現(xiàn)任何一個makefile文件發(fā)生變化,make就會清空所有記錄,并重新讀入所有makefile文件。 makefile文件重新生成的過程有時makefile文件可以由其它文件重新生成,如從RCS或SCCS文件生成等。然而如果運行make而缺少makefile文件時,環(huán)境變量MAKEFILES中makefile文件可以使內(nèi)置的隱含規(guī)則更好的發(fā)揮作用,如搜尋定義的路徑等(詳細內(nèi)容參閱在目錄中搜尋依賴)。Make完成這個工作和上節(jié)完成include指令的方式基本相同,即在特定的目錄中搜尋這些文件。只有在所有make尋求丟失的makefile文件的努力失敗后,make才能斷定丟失的makefile文件是一個致命的錯誤。如果指定包含的makefile文件在上述所有的目錄都不能找到,make將產(chǎn)生一個警告信息,注意這不是致命的錯誤。 (通常為 ‘/usr/local/include39。這種方式比其它版本的make把依賴附加在主makefile文件后部的傳統(tǒng)方式更顯得簡潔。例如,有三個‘.mk’文件:‘’、‘’和‘’,變量$(bar)擴展為bish bash,則下面的表達是:include foo *.mk $(bar)和‘include foo bish bash’等價。指令在makefile文件占單獨一行,其格式如下:include filenames...filenames可以包含shell文件名的格式。參數(shù)‘f name’或‘file=name’能夠告訴make讀名字為‘name’的文件作為makefile文件。如果make不能發(fā)現(xiàn)具有上面所述名字的文件,它將不使用任何makefile文件。(我們推薦使用‘Makefile’,因為它基本出現(xiàn)在目錄列表的前面,后面挨著其它重要的文件如‘README’等。注釋行在處理時將被make忽略,如果一個注釋行在行尾是‘\’則表示下一行繼續(xù)為注釋行,這樣注釋可以持續(xù)多行。這些包括如下幾方面:![if !supportLists]n ![endif]讀其它makefile文件(詳細內(nèi)容參見包含其它的makefile文件)。![if !supportLists]l ![endif]定義變量是為一個變量賦一個固定的字符串值,從而在以后的文件中能夠使用該變量代替這個字符串。詳細內(nèi)容參閱編寫規(guī)則一章。規(guī)則、變量和指令將在后續(xù)章節(jié)介紹。諸如這樣的規(guī)則不能放在makefile文件的開始,因為我們不希望它變?yōu)槿笔∽罱K目標。 在目錄中刪除文件的規(guī)則編譯程序并不是編寫make規(guī)則的唯一事情。 另一種風格的makefile文件當時在makefile文件中使用隱含規(guī)則創(chuàng)建OBJ文件時,采用另一種風格的makefile文件也是可行的。下面是使用隱含規(guī)則和變量objects的完整makefile文件的例子:objects = \ ![if !supportEmptyParas] ![endif]edit : $(objects) cc o edit $(objects)![if !supportEmptyParas] ![endif] : : : : : : : : ![if !supportEmptyParas] ![endif].PHONY : cleanclean : rm edit $(objects)這是我們實際編寫makefile文件的例子。因此,我們可以省略O(shè)BJ文件的更新規(guī)則。在這個makefile文件我們定義了名為objects的變量,其定義格式如下:objects = \ 然后,在每一個需要列舉OBJ文件的地方,我們使用寫為`$(objects)39。在我們的例子中,我們在‘edit’的生成規(guī)則中把所有的OBJ文件列舉了兩次,這里再重復一遍:edit : \ cc o edit \ 這樣的兩次列舉有出錯的可能,例如在系統(tǒng)中加入一個新的OBJ文件,我們很有可能在一個需要列舉的地方加入了,而在另外一個地方卻忘記了。 在OBJ文件重新編譯(如果需要的話)之后,make決定是否重新連接生成edit可執(zhí)行文件。如果一些規(guī)則和缺省最終目標無任何關(guān)聯(lián)則這些規(guī)則不會被執(zhí)行,除非告訴Make強制執(zhí)行(如輸入執(zhí)行make cle
點擊復制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1