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

正文內(nèi)容

gnumake使用手冊(中譯版)-資料下載頁

2025-06-25 06:48本頁面
  

【正文】 理所有文件時產(chǎn)生的錯誤。.IGNORE命令并沒有特別的含義,.IGNORE的用途僅是為了和早期版本的兼容。,所以它的用途不大;我們推薦你使用其它方法來忽略特定命令產(chǎn)生的錯誤。詳細(xì)內(nèi)容參閱命令錯誤。9. .SILENT,則在執(zhí)行之前MAKE將不會回顯重新構(gòu)造文件的命令。,任何命令在執(zhí)行之前都不會打印。.SILENT并沒有特別的含義,其用途僅是為了和早期版本的兼容。我們推薦你使用其它方法來處理那些不打印的命令。詳細(xì)內(nèi)容參閱命令回顯。如果你希望所有的命令都不打印,請使用‘s’或‘silent’選項(詳細(xì)參閱選項概要)。10. .EXPORT_ALL_VARIABLES如該特殊目標(biāo)簡單的作為一個目標(biāo)被提及,MAKE將缺省地把所有變量都傳遞到子進(jìn)程中。參閱使與子MAKE通信的變量。11. .NOTPARALLEL,即使給出‘j’選項,make也不使用并行執(zhí)行。但遞歸調(diào)用的make命令仍可并行執(zhí)行()。.NOTPARALLEL的任何依賴都將忽略。任何定義的隱含規(guī)則后綴如果作為目標(biāo)出現(xiàn)都會視為一個特殊規(guī)則,即使兩個后綴串聯(lián)起來也是如此,例如‘.’。這些目標(biāo)稱為后綴規(guī)則,這種定義方法是過時的定義隱含規(guī)則的方法(目前仍然廣泛使用的方法)。原則上,如果你要把它分為兩個并把它們加到后綴列表中,任何目標(biāo)名都可采用這種方法指定。實際上,后綴一般以‘.’開始,因此,這些特別的目標(biāo)同樣以‘.’開始。具體參閱過時的后綴規(guī)則。 具有多個目標(biāo)的規(guī)則具有多個目標(biāo)的規(guī)則等同于寫多條規(guī)則,這些規(guī)則除了目標(biāo)不同之外,其余部分完全相同。相同的命令應(yīng)用于所有目標(biāo),但命令執(zhí)行的結(jié)果可能有所差異,因此你可以在命令中使用‘$@’分配不同的實際目標(biāo)名稱。這條規(guī)則同樣意味著所有的目標(biāo)有相同的依賴。在以下兩種情況下具有多個目標(biāo)的規(guī)則相當(dāng)有用:你僅僅需要依賴,但不需要任何命令。例如: : 為三個提及的目標(biāo)文件給出附加的共同依賴。所有的目標(biāo)使用相同的命令。但命令的執(zhí)行結(jié)果未必完全相同,因為自動變量‘$@’可以在重建時指定目標(biāo)(參閱自動變量)。例如:bigoutput littleoutput : generate $(subst output,$@) $@等同于:bigoutput : generate big bigoutputlittleoutput : generate little littleoutput這里我們假設(shè)程序可以產(chǎn)生兩種輸出文件類型:一種給出‘big’,另一種給出‘little’。參閱字符串代替和分析函數(shù),對函數(shù)subst的解釋。如果你喜歡根據(jù)目標(biāo)變換依賴,像使用變量‘$@’變換命令一樣。你不必使用具有多個目標(biāo)的規(guī)則,你可以使用靜態(tài)格式規(guī)則。詳細(xì)內(nèi)容見下文。 具有多條規(guī)則的目標(biāo)一個目標(biāo)文件可以有多個規(guī)則。在所有規(guī)則中提及的依賴都將融合在一個該目標(biāo)的依賴列表中。如果該目標(biāo)比任何一個依賴‘舊’,所有的命令將執(zhí)行重建該目標(biāo)。但如果一條以上的規(guī)則對同一文件給出多條命令,make將使用最后給出的規(guī)則,同時打印錯誤信息。(作為特例,如果文件名以點‘.’開始,不打印出錯信息。這種古怪的行為僅僅是為了和其它版本的make兼容)。你沒有必要這樣編寫你的makefile文件,這正是make給你發(fā)出錯誤信息的原因。一條特別的依賴規(guī)則可以用來立即給多條目標(biāo)文件提供一些額外的依賴。例如,使用名為‘objects’的變量,該變量包含系統(tǒng)產(chǎn)生的所有輸出文件列表。如果‘’發(fā)生變化所有的輸出文件必須重新編譯,可以采用下列簡單的方法編寫:objects = : : $(objects) : 這些可以自由插入或取出而不影響實際指定的目標(biāo)文件生成規(guī)則,如果你希望斷斷續(xù)續(xù)的為目標(biāo)添加依賴,這是非常方便的方法。另外一個添加依賴的方法是定義一個變量,并將該變量作為make命令的參數(shù)使用。詳細(xì)內(nèi)容參閱變量重載。例如:extradeps=$(objects) : $(extradeps)命令‘make extradeps=39。含義是將‘’作為所有OBJ文件的依賴,如果僅僅輸入‘make’命令則不是這樣。如果沒有具體的規(guī)則為目標(biāo)的生成指定命令,那么make將搜尋合適的隱含規(guī)則進(jìn)而確定一些命令來完成生成或重建目標(biāo)。詳細(xì)內(nèi)容參閱使用隱含規(guī)則。 靜態(tài)格式規(guī)則靜態(tài)格式規(guī)則是指定多個目標(biāo)并能夠根據(jù)每個目標(biāo)名構(gòu)造對應(yīng)的依賴名的規(guī)則。靜態(tài)格式規(guī)則在用于多個目標(biāo)時比平常的規(guī)則更常用,因為目標(biāo)可以不必有完全相同的依賴;也就是說,這些目標(biāo)的依賴必須類似,但不必完全相同。 靜態(tài)格式規(guī)則的語法這里是靜態(tài)格式規(guī)則的語法格式:targets ...: targetpattern: deppatterns ... mands ...目標(biāo)列表指明該規(guī)則應(yīng)用的目標(biāo)。目標(biāo)可以含有通配符,具體使用和平常的目標(biāo)規(guī)則基本一樣(參閱在文件名中使用通配符)。目標(biāo)的格式和依賴的格式是說明如何計算每個目標(biāo)依賴的方法。從匹配目標(biāo)格式的目標(biāo)名中依據(jù)格式抽取部分字符串,這部分字符串稱為徑。將徑分配到每一個依賴格式中產(chǎn)生依賴名。每一個格式通常包含字符‘%’。目標(biāo)格式匹配目標(biāo)時,‘%’可以匹配目標(biāo)名中的任何字符串;這部分匹配的字符串稱為徑;剩下的部分必須完全相同。如目標(biāo)‘’匹配格式‘%.o’,字符串‘foo’稱為徑。而目標(biāo)‘’和‘’不匹配格式。每個目標(biāo)的依賴名是使用徑代替各個依賴中的‘%’產(chǎn)生。如果一個依賴格式為‘%.c’,把徑‘foo’代替依賴格式中的‘%’生成依賴的文件名‘’。在依賴格式中不包含‘%’也是合法的,此時對所有目標(biāo)來說,依賴是相同的。在格式規(guī)則中字符‘%’可以用前面加反斜杠‘\’方法引用。引用‘%’的反斜杠也可以由更多的反斜杠引用。引用‘%’、‘\’的反斜杠在和文件名比較或由徑代替它之前從格式中移走。反斜杠不會因為引用‘%’而混亂。如,格式‘the\%weird\\%pattern\\39。是‘the%weird\39。 加上字符‘%39。,后面再和字符串 ‘pattern\\39。連接。最后的兩個反斜杠由于不能影響任何統(tǒng)配符‘%’所以保持不變。這里有一個例子,它將對應(yīng)的‘.c’文件編譯成‘’和‘’。objects = all: $(objects)$(objects): %.o: %.c $(CC) c $(CFLAGS) $ o $@這里‘$’是自動變量,控制依賴的名稱,‘$@’也是自動變量,掌握目標(biāo)的名稱。詳細(xì)內(nèi)容參閱自動變量。每一個指定目標(biāo)必須和目標(biāo)格式匹配,如果不符則產(chǎn)生警告。如果你有一列文件,僅有其中的一部分和格式匹配,你可以使用filter函數(shù)把不符合的文件移走(參閱字符串替代和分析函數(shù)):files = $(filter %.o,$(files)): %.o: %.c $(CC) c $(CFLAGS) $ o $@$(filter %.elc,$(files)): %.elc: %.el emacs f batchbytepile $在這個例子中,‘$(filter %.o,$(files))39。的結(jié)果是‘ 39。,第一個靜態(tài)格式規(guī)則是將相應(yīng)的C語言源文件編譯更新為OBJ文件,‘$(filter %.elc,$(files))39。 的結(jié)果是‘39。,它由‘’構(gòu)造。另一個例子是闡明怎樣在靜態(tài)格式規(guī)則中使用‘$*’:bigoutput littleoutput : %output : generate $* $@當(dāng)命令generate執(zhí)行時,$*擴(kuò)展為徑,即‘big’或‘little’二者之一。 靜態(tài)格式規(guī)則和隱含規(guī)則靜態(tài)格式規(guī)則和定義為格式規(guī)則的隱含規(guī)則有很多相同的地方(詳細(xì)參閱定義與重新定義格式規(guī)則)。雙方都有對目標(biāo)的格式和構(gòu)造依賴名稱的格式,差異是make使用它們的時機(jī)不同。隱含規(guī)則可以應(yīng)用于任何于它匹配的目標(biāo),但它僅僅是在目標(biāo)沒有具體規(guī)則指定命令以及依賴可以被搜尋到的情況下應(yīng)用。如果有多條隱含規(guī)則適合,僅有執(zhí)行其中一條規(guī)則,選擇依據(jù)隱含規(guī)則的定義次序。相反,靜態(tài)格式規(guī)則用于在規(guī)則中指明的目標(biāo)。它不能應(yīng)用于其它任何目標(biāo),并且它的使用方式對于各個目標(biāo)是固定不變的。如果使用兩個帶有命令的規(guī)則發(fā)生沖突,則是錯誤。靜態(tài)格式規(guī)則因為如下原因可能比隱含規(guī)則更好:1. 對一些文件名不能按句法分類的但可以給出列表的文件,使用靜態(tài)格式規(guī)則可以重載隱含規(guī)則鏈。2. 如果不能精確確定使用的路徑,你不能確定一些無關(guān)緊要的文件是否導(dǎo)致make使用錯誤的隱含規(guī)則(因為隱含規(guī)則的選擇根據(jù)其定義次序)。使用靜態(tài)格式規(guī)則則沒有這些不確定因素:每一條規(guī)則都精確的用于指定的目標(biāo)上。 雙冒號規(guī)則雙冒號規(guī)則是在目標(biāo)名后使用‘::’代替‘:’的規(guī)則。當(dāng)同一個目標(biāo)在一條以上的規(guī)則中出現(xiàn)時,雙冒號規(guī)則和平常的規(guī)則處理有所差異。當(dāng)一目標(biāo)在多條規(guī)則中出現(xiàn)時,所有的規(guī)則必須是同一類型:要么都是雙冒號規(guī)則,要么都是普通規(guī)則。如果他們都是雙冒號規(guī)則,則它們之間都是相互獨立的。如果目標(biāo)比一個雙冒號規(guī)則的依賴‘舊’,則該雙冒號規(guī)則的命令將執(zhí)行。這可導(dǎo)致具有同一目標(biāo)雙冒號規(guī)則全部或部分執(zhí)行。雙冒號規(guī)則實際就是將具有相同目標(biāo)的多條規(guī)則相互分離,每一條雙冒號規(guī)則都獨立的運(yùn)行,就像這些規(guī)則的目標(biāo)不同一樣。對于一個目標(biāo)的雙冒號規(guī)則按照它們在makefile文件中出現(xiàn)的順序執(zhí)行。然而雙冒號規(guī)則真正有意義的場合是雙冒號規(guī)則和執(zhí)行順序無關(guān)的場合。雙冒號規(guī)則有點模糊難以理解,它僅僅提供了一種在特定情況下根據(jù)引起更新的依賴文件不同,而采用不同方式更新目標(biāo)的機(jī)制。實際應(yīng)用雙冒號規(guī)則的情況非常罕見。每一個雙冒號規(guī)則都應(yīng)該指定命令,如果沒有指定命令,則會使用隱含規(guī)則。詳細(xì)內(nèi)容參閱使用隱含規(guī)則。 自動生成依賴在為一個程序編寫的makefile文件中,常常需要寫許多僅僅是說明一些OBJ文件依靠頭文件的規(guī)則。例如,如果‘’通過一條include語句使用‘’,你需要寫入下的規(guī)則:: 你需要這條規(guī)則讓make知道如果‘’一旦改變必須重新構(gòu)造‘’。由此你可以明白對于一個較大的程序你需要在makefile文件中寫很多這樣的規(guī)則。而且一旦添加或去掉一條include語句你必須十分小心地更改makefile文件。為避免這種煩惱,現(xiàn)代C編譯器根據(jù)原程序中的include語句可以為你編寫這些規(guī)則。如果需要使用這種功能,通??稍诰幾g源程序時加入‘M’開關(guān),例如,下面的命令:cc M 產(chǎn)生如下輸出: : 這樣你就不必再親自寫這些規(guī)則,編譯器可以為你完成這些工作。注意,由于在makefile文件中提及構(gòu)造‘’,因此‘’將永遠(yuǎn)不會被隱含規(guī)則認(rèn)為是中間文件而進(jìn)行搜尋,這同時意味著make不會在使用它之后自動刪除它;參閱隱含規(guī)則鏈。對于舊版的make程序,通過一個請求命令,如‘make depend’,利用編譯器的特點生成依賴是傳統(tǒng)的習(xí)慣。這些命令將產(chǎn)生一個‘depend’文件,該文件包含所有自動生成的依賴;然后makefile文件可以使用include命令將它們讀入(參閱包含其它makefile文件)。在GNU make中,重新構(gòu)造makefile文件的特點使這個慣例成為了過時的東西――你永遠(yuǎn)不必具體告訴make重新生成依賴,因為GNU make總是重新構(gòu)造任何過時的makefile文件。參閱Makefile文件的重新生成的過程。我們推薦使用自動生成依賴的習(xí)慣是把makefile文件和源程序文件一一對應(yīng)起來。如,對每一個源程序文件‘’有一名為‘’的makefile文件和它對應(yīng),該makefile文件中列出了名為‘’的OBJ文件所依賴的文件。這種方式的優(yōu)點是僅在源程序文件改變的情況下才有必要重新掃描生成新的依賴。這里有一個根據(jù)C語言源程序‘’生成名為‘’依賴文件的格式規(guī)則:%.d: %.c set e。 $(CC) M $(CPPFLAGS) $ \ | sed 39。s/\($*\)\.o[ :]*/\ $@ : /g39。 $@。 \ [ s $@ ] || rm f $@關(guān)于定義格式規(guī)則的信息參閱定義與重新定義格式規(guī)則?!甧’開關(guān)是告訴shell如果$(CC)命令運(yùn)行失?。ǚ橇銧顟B(tài)退出)立即退出。正常情況下,shell退出時帶有最后一個命令在管道中的狀態(tài)(sed),因此make不能注意到編譯器產(chǎn)生的非零狀態(tài)。對于GNU C編譯器你可以使用‘MM’開關(guān)代替‘M’,這是省略了有關(guān)系統(tǒng)頭文件的依賴。詳細(xì)內(nèi)容參閱《GNU CC使用手冊》中控制預(yù)處理選項。命令Sed的作用是翻譯(例如): : 到: : 這使每一個‘.d’文件和與之對應(yīng)的‘.o’文件依靠相同的源程序文件和頭文件,據(jù)此,Make可以知道如果任一個源程序文件和頭文件發(fā)生變化,則必須重新構(gòu)造依賴文件。一旦你定義了重新構(gòu)造‘.d’文件的規(guī)則,你可以使用include命令直接將它們讀入,(參閱包含其它makefile文件),例如:sources = include $(sources:.c=.d)(這個例子中使用一個代替變量參照從源程序文件列表‘ 39。翻譯到依賴文件列表‘ 39。詳細(xì)內(nèi)容參閱替換引用。)所以,‘.d’的makefile文件和其它makefile文件一樣,即使沒用你的任何進(jìn)一步的指令,make同樣會在必要的時候重新構(gòu)建它們。參閱Makefile文件的重新生成過程。5 在規(guī)則中使用命令規(guī)則中的命令由一系列shell命令行組成,它們一條一條的按順序執(zhí)行。除第一條命令行可以分號為開始附屬在目標(biāo)依賴行后面外,所有的命令行必須以TAB開始??瞻仔信c注釋行可在命令行中間出現(xiàn),處理時它們被忽略。(但是必須注意,以TAB開始的‘空白行’不是空白行,它是
點擊復(fù)制文檔內(nèi)容
研究報告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1