久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營的一線實(shí)戰(zhàn)洞察。

GNU Make eval函數(shù)詳解:用模板批量生成Makefile規(guī)則,告別重復(fù)維護(hù)

GNU Make eval函數(shù)詳解:用模板批量生成Makefile規(guī)則,告別重復(fù)維護(hù) 你的Makefile里是不是也有這種情節(jié)同一個(gè)編譯規(guī)則復(fù)制粘貼了十幾遍只改一下模塊名和文件路徑我承認(rèn)我干過而且是在一個(gè)模擬項(xiàng)目的三十多個(gè)子模塊上干的每次新增模塊都要手動(dòng)補(bǔ)規(guī)則、補(bǔ)依賴、補(bǔ)清理清單漏一條就讓你在深夜對(duì)著構(gòu)建日志發(fā)呆。后來真正把GNU Makefile里的eval函數(shù)用起來才找到治本的辦法把規(guī)則寫成模板讓make自己在解析階段批量生成。eval的定位很樸素——它接收一段文本把這段文本當(dāng)作makefile內(nèi)容現(xiàn)場(chǎng)解析配合define、call、foreach就能實(shí)現(xiàn)自動(dòng)生成規(guī)則。這篇文章把從最小例子到生產(chǎn)級(jí)坑點(diǎn)的完整路徑走一遍適合正在維護(hù)多模塊構(gòu)建、已經(jīng)受夠手寫重復(fù)規(guī)則的人。1. 從第30條重復(fù)規(guī)則說起eval到底幫我省了什么1.1 手工規(guī)則膨脹的典型現(xiàn)場(chǎng)我維護(hù)過一個(gè)模擬項(xiàng)目的構(gòu)建腳本結(jié)構(gòu)大概是這樣的十幾個(gè)子模塊每個(gè)模塊都要先編譯成目標(biāo)文件再鏈接成可執(zhí)行程序還要有一堆按模塊區(qū)分的測(cè)試入口。手工寫下去Makefile長這樣build/alpha.o: src/alpha.c $(CC) $(CFLAGS) -c $ -o $ build/alpha.bin: build/alpha.o $(CC) $(LDFLAGS) $^ -o $ build/beta.o: src/beta.c $(CC) $(CFLAGS) -c $ -o $ build/beta.bin: build/beta.o $(CC) $(LDFLAGS) $^ -o $模塊一多文件就變成規(guī)則海洋。問題不在于多寫了幾行而在于每次改構(gòu)建策略都要同步改幾十處某天我把CFLAGS統(tǒng)一加了一個(gè)-Werror就得保證所有編譯規(guī)則都改到某個(gè)新模塊忘記寫目錄依賴第一次構(gòu)建必掛。最要命的是這類文件沒法review出結(jié)構(gòu)大家只會(huì)逐行看有沒有拼錯(cuò)。復(fù)制粘貼還有一個(gè)隱形成本它讓規(guī)則的一致性變成了一種人工約定。只要有一次只改了A模塊沒改B模塊后續(xù)的構(gòu)建產(chǎn)物就開始悄悄不一致。我后來統(tǒng)計(jì)過手工維護(hù)階段這類漏改導(dǎo)致的構(gòu)建問題占了一半以上。1.2 eval在make里的真正位置簡單說make在執(zhí)行recipe之前要先花一段時(shí)間把整個(gè)makefile讀進(jìn)來解析變量、規(guī)則、依賴構(gòu)建出一張依賴圖這個(gè)過程叫讀入階段。eval就是在讀入階段生效的——它把一段文本現(xiàn)場(chǎng)變成makefile文本再現(xiàn)場(chǎng)解析。你可以把它理解為在makefile內(nèi)部裝了一個(gè)宏處理器。這跟函數(shù)式編程里的代碼生成代碼很像eval先把模板里的占位符換成真實(shí)值生成一段makefile片段然后這段片段和手寫的規(guī)則沒有任何區(qū)別會(huì)被make當(dāng)成普通規(guī)則加入依賴圖。所以生成的規(guī)則和手寫的規(guī)則是平級(jí)的后續(xù)的依賴解析、并行構(gòu)建、make -n試運(yùn)行全都一視同仁。需要注意這是GNU Make的功能特性。BSD make、nmake這類工具要么沒有對(duì)應(yīng)的eval要么語法完全不同。如果項(xiàng)目明確要求跨多種make工具移植用eval之前要想清楚或者評(píng)估能否接受僅支持GNU Make這個(gè)前提。1.3 什么項(xiàng)目值得上eval兩道判斷題我一般用兩個(gè)問題來判斷這些規(guī)則是不是同構(gòu)的也就是除了名字、路徑、參數(shù)不同結(jié)構(gòu)完全一樣。數(shù)量是不是大到手動(dòng)維護(hù)會(huì)出錯(cuò)一般來說超過五六個(gè)同構(gòu)目標(biāo)就開始值得了。如果目標(biāo)少于五個(gè)而且每個(gè)規(guī)則差異都很大比如有的要調(diào)內(nèi)置工具、有的要跑外部腳本、有的要特殊后處理那強(qiáng)行套eval反而把簡單問題復(fù)雜化。eval最適合的場(chǎng)景是大量同構(gòu)目標(biāo) 少量差異化參數(shù)這時(shí)候它才能把規(guī)則的重復(fù)度壓到最低讓新增模塊變成一行列表項(xiàng)。團(tuán)隊(duì)對(duì)GNU Make的接受度也要考慮。如果整個(gè)構(gòu)建體系里已經(jīng)大量使用了$(call)、$(foreach)這類函數(shù)式語法那么引入eval幾乎沒有額外學(xué)習(xí)成本。如果團(tuán)隊(duì)還停留在makefile就是寫規(guī)則的認(rèn)知上那這篇文章后面的內(nèi)容反而是最好的入門教材。2. 先跑通再理解define、call與make的兩遍解析2.1 最小可復(fù)現(xiàn)例子先從最簡單的例子跑通。下面這個(gè)makefile定義了一個(gè)模板生成兩個(gè)目標(biāo)define greeting_rule say_$(1): echo hello, $$ endef $(eval $(call greeting_rule,one)) $(eval $(call greeting_rule,two))這里有個(gè)關(guān)鍵細(xì)節(jié)say_$(1):下面那行recipe縮進(jìn)必須是真實(shí)的Tab字符不是空格。define/endef會(huì)把中間的內(nèi)容原樣保存包括這個(gè)Tabeval解析時(shí)才能認(rèn)出它是recipe。運(yùn)行make say_one你應(yīng)該看到hello, say_one這短短幾行里其實(shí)串起了四個(gè)概念define定義多行變量$(1)是模板參數(shù)占位符$(call ...)把參數(shù)傳入模板$(eval ...)把展開后的文本當(dāng)作makefile內(nèi)容解析。整條鏈路就是模板 - 替換 - 解析。我把這個(gè)例子拆開說是因?yàn)楹芏嗳艘簧蟻砭蛯憦?fù)雜模板結(jié)果編譯報(bào)錯(cuò)也不知道是語法問題還是轉(zhuǎn)義問題。先把最小鏈路跑通再往上加?xùn)|西排查范圍會(huì)小很多。2.2 兩遍解析讀入期與執(zhí)行期理解eval必須理解make處理makefile的兩遍過程。第一遍是讀入期。make逐行讀取makefile解析變量賦值、規(guī)則定義、依賴關(guān)系最終形成一張完整的依賴圖。$(eval ...)調(diào)用就發(fā)生在這一遍它邊生成文本邊解析相當(dāng)于在讀入過程中不斷往依賴圖里追加內(nèi)容。第二遍是執(zhí)行期。make拿到依賴圖之后檢查哪些目標(biāo)過期然后按依賴順序執(zhí)行recipe。注意recipe里的變量不是讀入期就展開的而是延遲到執(zhí)行期、每一條shell命令執(zhí)行前才展開。這就是recipe延遲展開機(jī)制。這兩遍分開的代價(jià)是eval的參數(shù)本身會(huì)被make先展開一次。寫$(eval $(call xxx))的時(shí)候make會(huì)先把$(call xxx)展開成一段makefile文本然后才去解析這段文本。所以模板里凡是想原樣留給執(zhí)行期的變量引用都必須多寫一個(gè)$。這直接引出下面這個(gè)最容易被繞暈的轉(zhuǎn)義問題。2.3 立即展開、延遲展開與那對(duì)$$我見過太多人在eval模板里被$$折磨。其實(shí)規(guī)則就一條eval參數(shù)展開時(shí)$()會(huì)立刻取值$$()經(jīng)過展開后蛻變成$()原樣寫進(jìn)解析結(jié)果為recipe留到執(zhí)行期再展開。在模板里寫eval展開后存入數(shù)據(jù)庫最終執(zhí)行效果$(CFLAGS)CFLAGS的當(dāng)前值生成時(shí)快照后續(xù)改動(dòng)不影響$$(CFLAGS)文本$(CFLAGS)執(zhí)行recipe時(shí)才取CFLAGS的值$$$執(zhí)行時(shí)自動(dòng)變量目標(biāo)名$空字符串讀入期沒有目標(biāo)上下文直接丟掉最后一行的坑最典型$是自動(dòng)變量只有執(zhí)行recipe時(shí)才有意義。在eval參數(shù)展開階段make根本不在任何規(guī)則上下文里$就是空串。所以模板里的自動(dòng)變量必須寫成$$、$$、$$^。我的經(jīng)驗(yàn)法則是模板里所有希望最終在recipe里展開的東西一律寫成$$開頭寧可多轉(zhuǎn)義不要少轉(zhuǎn)義。3. 實(shí)戰(zhàn)從源文件列表批量生成編譯規(guī)則3.1 foreach call eval三連的完整骨架現(xiàn)在把前面幾塊拼起來做一個(gè)真正能用的編譯規(guī)則生成器。假設(shè)有三個(gè)模塊alpha、beta、gamma每個(gè)模塊有一個(gè)源文件APPS : alpha beta gamma define app_rule build/$(1).o: src/$(1).c | build_dir $$(CC) $$(CFLAGS) -c $$ -o $$ build/$(1).bin: build/$(1).o $$(CC) $$(LDFLAGS) $$^ -o $$ endef $(foreach app,$(APPS),$(eval $(call app_rule,$(app)))) build_dir: mkdir -p build .PHONY: build_dir$(foreach app,$(APPS),...)的語義是遍歷APPS列表每輪把當(dāng)前值賦給變量app并展開循環(huán)體文本。展開體里調(diào)用了$(call app_rule,$(app))于是每個(gè)模塊名都會(huì)被代入模板生成兩到三行規(guī)則文本最后交給$(eval)解析。這么一來APPS列表成了唯一的事實(shí)來源。新增一個(gè)模塊只需要在列表里加一行編譯規(guī)則、鏈接規(guī)則、目錄依賴全部自動(dòng)生成。我把這個(gè)模式叫作三連foreach負(fù)責(zé)遍歷call負(fù)責(zé)傳參eval負(fù)責(zé)落地。| build_dir是order-only前置依賴意思是構(gòu)建前必須先執(zhí)行build_dir的recipe但它的時(shí)間戳變化不觸發(fā)本目標(biāo)重編。目錄這種資源時(shí)間戳每構(gòu)建一次都會(huì)變?nèi)绻麑懗善胀ㄒ蕾嚂?huì)導(dǎo)致所有目標(biāo)每次都被判為過時(shí)那是純粹浪費(fèi)。這個(gè)細(xì)節(jié)別忽略。3.2 把差異化參數(shù)收進(jìn)模板每模塊一套編譯選項(xiàng)同構(gòu)規(guī)則最常見的變體是編譯參數(shù)不一樣。比如alpha要開-O2和宏定義beta要開-g做調(diào)試。手工階段這類差異是靠復(fù)制粘貼不同CFLAGS行實(shí)現(xiàn)的用eval可以把參數(shù)做成每模塊一個(gè)變量模板里按目標(biāo)名拼變量名APPS : alpha beta CFLAGS_alpha : -O2 -DALPHA CFLAGS_beta : -O0 -g -Wall define app_rule obj/$(1).o: src/$(1).c $$(CC) $$(CFLAGS_$(1)) -c $$ -o $$ endef $(foreach app,$(APPS),$(eval $(call app_rule,$(app))))注意$$(CFLAGS_$(1))的處理順序$(call)先把$(1)替換成模塊名比如alpha模板就變成$$(CFLAGS_alpha)eval參數(shù)展開時(shí)$$蛻變成$存進(jìn)數(shù)據(jù)庫的是$(CFLAGS_alpha)等到執(zhí)行recipe時(shí)才真正去讀CFLAGS_alpha變量的值。所以這個(gè)模板既捕獲了每模塊不同參數(shù)的差異又保持了參數(shù)可以后定義的靈活性——CFLAGS_alpha放在foreach前還是后都不影響最終結(jié)果。這套寫法比每個(gè)模塊復(fù)制一行CFLAGS干凈得多。以后想看某模塊用了什么編譯選項(xiàng)直接看變量定義區(qū)想統(tǒng)一加選項(xiàng)改一處全局的也沒問題。3.3 順手生成目錄規(guī)則、clean入口與all收口eval還有一個(gè)經(jīng)常被忽略的能力它生成的文本里可以包含普通的變量賦值語句。也就是說eval不僅能生成規(guī)則還能在生成的同一次解析中執(zhí)行TARGETS ...這類賦值。利用這一點(diǎn)我們可以讓模板自動(dòng)收集自己生成的目標(biāo)TARGETS : define app_rule bin/$(1): obj/$(1).o $$(CC) $$(LDFLAGS) $$ -o $$ obj/$(1).o: src/$(1).c $$(CC) $$(CFLAGS) -c $$ -o $$ TARGETS bin/$(1) endef $(foreach app,$(APPS),$(eval $(call app_rule,$(app)))) all: $(TARGETS)這里有一個(gè)極其關(guān)鍵的順序問題all: $(TARGETS)這一行必須放在foreach之后。原因在于make在解析all:規(guī)則時(shí)會(huì)立刻展開$(TARGETS)來得到依賴列表除非開了.SECONDEXPANSION。如果all寫在foreach前面那一刻TARGETS還是空的等于定義了all:沒有任何依賴。這跟變量要先用后算是兩回事純粹是解析順序?qū)е碌?。很多初學(xué)者在這里卡住以為是eval沒生效其實(shí)是規(guī)則位置錯(cuò)了。clean規(guī)則也可以順手補(bǔ)上。既然所有構(gòu)建產(chǎn)物都集中在build、obj、bin幾個(gè)目錄里清理就很省事clean: rm -rf build obj bin整個(gè)構(gòu)建腳本現(xiàn)在只剩三部分模塊清單、模板定義、foreach生成區(qū)。手工Makefile里那種上百行規(guī)則海洋徹底消失了。4. 讓生成的規(guī)則互相引用元數(shù)據(jù)收集與自動(dòng)變量細(xì)節(jié)4.1 eval不僅能生成規(guī)則還能生成聲明和賦值如果你以為eval只能生成目標(biāo): 依賴這種規(guī)則行那就浪費(fèi)了一半功力。eval生成的文本可以是任何makefile合法內(nèi)容變量賦值、偽目標(biāo)聲明、include指令甚至另一個(gè)$(eval)的調(diào)用文本。比如給每個(gè)模塊生成一個(gè)自檢入口define app_rule .PHONY: run_$(1) run_$(1): bin/$(1) ./bin/$(1) --self-check TARGETS bin/$(1) endef模板里.PHONY: run_$(1)這一行經(jīng)過eval解析后會(huì)變成真實(shí)的偽目標(biāo)聲明跟手寫的.PHONY效果一致。你也可以在模板里給某個(gè)變量做累加把生成規(guī)則和收集規(guī)則信息合在一次eval里完成。這就是元數(shù)據(jù)收集規(guī)則本身進(jìn)了依賴圖規(guī)則的名字也進(jìn)了變量供后續(xù)統(tǒng)一處理?;氐?.1開頭那句包括另一個(gè)eval的調(diào)用文本——技術(shù)上嵌套eval可用但我并不推薦。嵌套會(huì)讓轉(zhuǎn)義層數(shù)指數(shù)級(jí)上升排查問題時(shí)會(huì)極其痛苦。如果你發(fā)現(xiàn)自己需要在一個(gè)模板里再套一層eval先停下來想想是不是可以用兩個(gè)foreach、兩個(gè)模板分階段完成。4.2 自動(dòng)變量轉(zhuǎn)義對(duì)照表與模式規(guī)則取舍前面提過自動(dòng)變量在模板里的轉(zhuǎn)義問題這里給一份完整對(duì)照表方便你寫模板時(shí)直接查自動(dòng)變量含義eval模板里的寫法$目標(biāo)名$$$第一個(gè)前置依賴$$$^所有前置依賴去重$$^$?比目標(biāo)新的前置依賴$$?$*模式規(guī)則中匹配的部分$$*$(D)目標(biāo)所在目錄$$(D)$(F)目標(biāo)文件名部分$$(F)$(D)第一個(gè)前置依賴的目錄$$(D)$(F)第一個(gè)前置依賴的文件名$$(F)這里要提醒一句eval不是萬能的也不是所有規(guī)則都該用eval生成。如果你的目標(biāo)名有嚴(yán)格的字符串規(guī)律比如所有源文件都走obj/%.o: src/%.c直接寫一條模式規(guī)則就夠了一行解決根本不需要模板。eval真正不可替代的場(chǎng)景是目標(biāo)之間是離散的每個(gè)目標(biāo)還帶有獨(dú)立參數(shù)。比如按模塊生成不同名字的二進(jìn)制、按配置生成不同后綴的打包產(chǎn)物這種同構(gòu)但不滿足模式匹配的情況才是eval的主場(chǎng)。4.3 多模塊交叉依賴生成規(guī)則之間如何協(xié)調(diào)實(shí)際項(xiàng)目里模塊之間很少完全獨(dú)立常有A模塊鏈接時(shí)依賴B模塊生成的庫這種情況。eval生成規(guī)則會(huì)不會(huì)導(dǎo)致依賴順序出問題不會(huì)。讀入期結(jié)束時(shí)make已經(jīng)把所有生成的規(guī)則都收進(jìn)依賴圖了圖的解析發(fā)生在執(zhí)行期。所以在文件里bin模板寫在lib模板前面、還是lib模板寫在bin模板前面對(duì)依賴圖的最終形態(tài)沒有影響。舉例define lib_rule lib/$(1).a: obj/$(1).o $$(AR) rcs $$ $$^ endef define bin_rule bin/$(1): lib/libcore.a $$(CC) $$(LDFLAGS) $$^ -o $$ endef即使bin_rule的foreach寫在lib_rule前面make依然能正確解析出bin/demo依賴lib/libcore.a。真正需要注意的是命名紀(jì)律如果兩個(gè)不同模板生成了同一個(gè)目標(biāo)名make會(huì)報(bào)target given more than once之類錯(cuò)誤。我的習(xí)慣是所有生成目標(biāo)都用$(1)做前綴或子目錄隔離從源頭杜絕目標(biāo)名沖突。5. 我在真實(shí)構(gòu)建里踩過的坑與調(diào)試腳手架5.1 規(guī)則靜默消失展開順序的典型錯(cuò)誤eval最坑的地方在于出錯(cuò)了不一定報(bào)錯(cuò)而是靜默生成空規(guī)則。我踩過最典型的幾個(gè)模板里寫$(CFLAGS)但CFLAGS在foreach之后才定義eval展開時(shí)取到空值生成出來的recipe變成一條沒有編譯參數(shù)的命令編譯卻照樣成功只是產(chǎn)物不對(duì)。修法是模板里統(tǒng)一寫$$(CFLAGS)讓取值延遲到執(zhí)行期。all: $(TARGETS)寫在foreach之前依賴列表展開為空make只輸出Nothing to be done。這個(gè)前面說過位置決定生死。試圖在recipe里調(diào)用$(eval ...)想讓make在每次構(gòu)建時(shí)動(dòng)態(tài)生成新規(guī)則。這是認(rèn)知錯(cuò)誤recipe是執(zhí)行期跑的讀入期早已結(jié)束eval不會(huì)生效。如果你確實(shí)需要每次構(gòu)建時(shí)重新生成規(guī)則正確做法是用$(file ...)把生成的makefile片段寫到磁盤再用include動(dòng)態(tài)包含它。第二條的排查經(jīng)驗(yàn)是遇到目標(biāo)沒生成或命令行為不對(duì)先懷疑展開順序再看轉(zhuǎn)義順序問題的特征是有據(jù)可循比如all放在前面轉(zhuǎn)義問題的特征是生成文本里多了空參數(shù)。5.2 空格縮進(jìn)與missing separator這是eval用戶最容易在復(fù)制代碼時(shí)踩的雷make要求recipe行以Tab開頭這個(gè)要求對(duì)eval生成的文本同樣生效。如果你的編輯器默認(rèn)把Tab轉(zhuǎn)成四個(gè)空格define塊里的recipe行就會(huì)變成空格縮進(jìn)eval解析時(shí)報(bào)錯(cuò)信息通常是missing separator——它不知道這一行該當(dāng)成規(guī)則、變量還是recipe。更隱蔽的情況是模板里有recipe行用了空格縮進(jìn)但前面恰好有一行規(guī)則定義make會(huì)把recipe行解析成游離的雜散文本有時(shí)不報(bào)錯(cuò)只是那條命令永遠(yuǎn)不執(zhí)行。這種不報(bào)錯(cuò)的錯(cuò)最費(fèi)時(shí)間。我的建議是在編輯器里關(guān)掉Tab轉(zhuǎn)空格功能或者在define塊寫完后用sed -n l這種命令檢查一下Tab字符是否真的存在。5.3 $(shell)與$(warning)在eval里的特殊行為eval參數(shù)里如果出現(xiàn)$(shell ...)它會(huì)在每次make解析時(shí)真的執(zhí)行一次shell命令。這意味著有副作用的shell命令寫文件、改系統(tǒng)狀態(tài)放進(jìn)eval里等于每次構(gòu)建都重復(fù)觸發(fā)副作用而且可能因?yàn)椴⑿小⑹≈卦嚨仍虍a(chǎn)生詭異行為。純查詢類命令讀版本號(hào)、獲取當(dāng)前時(shí)間可以用但也要意識(shí)到它拖慢了讀入階段。比$(shell)更適合調(diào)試eval的是$(warning)和$(info)。這兩個(gè)函數(shù)在展開時(shí)打印消息、返回空字符串用法很直觀。在模板里插一行$(warning now generating rule for $(1))能在foreach循環(huán)時(shí)看到每次調(diào)用的參數(shù)如果放在call之前或之后還能觀察文本生成的位置。我在模板里調(diào)試時(shí)最喜歡的一句是define app_rule $(info [template] target$(1)) ... endef這樣每次$(call)展開模板都會(huì)打印一次當(dāng)前模塊名一眼就能確認(rèn)循環(huán)有沒有跑、參數(shù)傳對(duì)沒有。5.4 調(diào)試腳手架先info打印再eval再make -p最后給一套我屢試不爽的調(diào)試流程。第一步把eval臨時(shí)改成info只看生成的文本不解析# 調(diào)試時(shí)先只打印不解析 $(foreach app,$(APPS),$(info $(call app_rule,$(app)))) # 確認(rèn)文本沒問題再換成 $(foreach app,$(APPS),$(eval $(call app_rule,$(app))))這一步能區(qū)分模板生成錯(cuò)了和規(guī)則解析錯(cuò)了。生成文本如果不對(duì)后面的eval報(bào)什么錯(cuò)都先別管先把模板和轉(zhuǎn)義理順。第二步用make -pR導(dǎo)出make的完整數(shù)據(jù)庫。-p會(huì)把所有讀入的規(guī)則打印出來-R禁用內(nèi)置規(guī)則減少噪音。在輸出里grep你的目標(biāo)名比如make -pR | grep -A5 build/alpha就能看到eval生成的規(guī)則是否真的進(jìn)了依賴圖依賴寫沒寫對(duì)、recipe是什么全都清清楚楚。第三步make -n做試運(yùn)行只看生成的shell命令不執(zhí)行。這條很關(guān)鍵因?yàn)橐?guī)則進(jìn)沒進(jìn)圖是一回事recipe展開成什么樣子是另一回事。make -n會(huì)讓你直觀地看到$$(CFLAGS)到底展開成了什么如果展開結(jié)果里有空參數(shù)或者$(殘留那基本可以斷定是轉(zhuǎn)義層數(shù)出了問題。還有一點(diǎn)心理準(zhǔn)備eval相關(guān)的報(bào)錯(cuò)信息經(jīng)常指向makefile:0或者一個(gè)不存在的行號(hào)因?yàn)槌鲥e(cuò)的內(nèi)容來自運(yùn)行時(shí)生成的文本make無法回溯到模板的原始位置。所以功能越復(fù)雜的eval模板越要保住命名紀(jì)律和區(qū)域注釋否則半年后你自己也看不懂那段生成代碼。我現(xiàn)在的構(gòu)建腳本里規(guī)則生成區(qū)占了將近一半新增模塊只需要在模塊清單里加一行剩下的事全部交給eval。如果讓我給一個(gè)最重要的習(xí)慣那就是模板文件名統(tǒng)一加前綴清晰標(biāo)識(shí)foreach生成區(qū)集中放在文件底部并配上大段注釋說明這個(gè)區(qū)域只允許改模塊清單和模板不要在這里手寫規(guī)則——這樣團(tuán)隊(duì)里其他人接手時(shí)才不會(huì)把eval生成的東西誤當(dāng)成普通規(guī)則去改。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
99re热| 99精品视频在线观看免费| 啊啊啊啊啊啊好多水| 青青青草原| 骚女高跟AV在线| 欧美成人色| 亚洲国产中文字幕| 午夜经典| 日少妇视频| 97人亚洲综合字幕| 欧美日韩系列| 中文字幕av乱伦| 色九月婷婷| 极品美女福利在线观看| 中文字幕伊人| 久久国产免费激情视频| 日本道日本道中文字幕日本道最新日本道在线观看| 久久AV无码AV| 亚洲国产精品成人综合| 大香久久| 91九色丰满高潮| 欧美三级偷拍| 综合五月天| 91久久婷婷| 亚洲一区二区三区四区视频| 亚洲精品国语在线播放| 青青草原狼av| 美女主播色欲91抠b在线播放| a人欧美综合天堂麻豆| 俺也射| 亚洲另类天堂| 久久艹逼视频| 91国产在线精品| 中文字幕99999| 久久久久久AⅤ无码免费肉站| 嗯啊不要啊在线 | 老熟女阿 国产91| 十八禁视频一区二区| 99久在线精品99re8| 人人妻人人色| 国产女人和拘做爰视频| 久久视网78| 欧美成年人性爱视频免费观看| 柠檬AV导航| 99热18这里只有精品| 国产精品视频自拍在线| 欧美日韩国产电影| 日本国产亚洲一区在线观看| 嗯嗯嗯嗯啊啊啊好紧好大| 91精品网站| 91大胆欧美| 自拍偷拍第26| 色偷综合| 日本不卡三级网在线播放| 欧亚第一综合网| 午夜一区| 91 丝袜在线| 探花精品 一区二区| 日欧亚洲二三区大片不卡| 家庭乱伦麻豆| 天天噜| 亚洲麻豆18发?| 日韩久久三区| 精品视频一区二区| 熟女精品一区二区三区| 97伦综合| 传媒在线观看一区二区三区| 97久久综合网| 乱欲一区二区| 俄罗斯一区二区视频在线观看| 992这里有精品| 久草尤物| 男人天堂网手机版婷婷| 日日爽夜夜爽| 九色在线熟女国产黑人| 本道综合精品| 久久久穴999| 婷婷亚洲综合| 亚洲小电影免费涩涩成人在线高清| 999九九精品| 欧美 亚洲 制服 精品| 色呦呦呦在线观看视频| 亚洲综合影院| 外国91| 狠色婷婷久久一区二区三区_| 午夜免费福利视频一区| 尤物黄色在线观看网站| 蜜臀久久99精品久久久久久无删减| 97超碰天天爱天天爱| 日韩在线76| 韩日无码在线观看| 天天综合网日韩7799| 日韩97| 花花AV导航| 啊啊啊啊在线播放| 美女骚尻视频| 中文在线视频| 亚洲日韩97| 国产精品网址| 久久不卡一区二区| 婷婷五月成人| 国产福利影视| 浓厚中出中文字幕在线| 亚洲国产一级中文综合久久天堂在线免费观看| 欧洲亚洲天堂精品| 国产丁香精品露脸视频| 亚洲日韩在线a不卡99精品| 少妇久久久久久| 爱欲AV| 在线免费观看日韩一区| 午夜毛片亚洲精品片国产久久久| 又黄又爽在线观看视频| 欧美视频一区二区在线| 377p欧洲日本亚洲大胆| 日韩精品人妻一| 国产高清MV操逼视频| 亚洲操逼无码| 91色艳| 欧美久久毛片基地| 91美女国产在线| 欧美色图片色哟哟| 在线观看亚洲成人精品| 操操逼操操逼操操逼逼| 久操大香蕉手机视频在线看| 99999精品视频| 欧美亚洲se91| 色悠久| 亚洲一欧洲中文字幕在线| 久久美女福利是上海美女| 成人贴图日韩欧美| 九九人妻| 在线免费观看日韩一区| 91五月天| 国产高清在线自在拍69| 超碰在线人妻中文字幕| 青青草天天亲夜夜操网| 夜夜人妻爽| 少妇淫妇久久久久久久| 国产黄片在线免费观看| 欧美综合加勒比在线| 综合五月天| 亚洲精品无码少妇久久| 日韩一区二区三区四区五区| 五月婷亚洲精品天堂| 亚洲一二三四区| 欧美另类精品xxxx| 五月开心网| 精品国产91av一区二区三区| 999九九精品| 啪啪性爱免费视频| 99热 按摩 日韩| 免费啪啪av| 九九久久久| 亚洲男人的天堂一区二区| 色综合一区二区三区| www.激情| 国产美女裸体秘 永久无遮挡| 加勒比AV天堂| 99精品无码| 一级一性爱免费视频| 精品国产污一区二区三区| 性爱综合一区二区| 91蜜桃传媒精品久久久一区二区| 久久人妻视频网| 中国一级αV| 91/欧美| 日本www操操操| 欧美日韩色| 有码免费观看| 91人妻素女| 亚洲欧美综合网 | 九九探花视频在线观看| 阿姨一区二区免费视频-高清正片西瓜视频下载app-T450AV | 国产精品第二页| 久热这里| 岛国视频免费在线观看| 密乳无码| 欧美成人性爱视频在线播放| 91天堂丝袜美腿| 台湾佬中文娱乐自偷自拍| 手机在线播放国产福利| 好爽视频在线观看视频| 欧洲一区二区三区四区在线观看| 青娱乐蜜桃臀AV色婷| 成人片在线播放| 強姦亂倫a| 我要色综合网站| 黄色高清久久无码依人| 大香蕉伊人久久| 成人av影院在线观看| 综合熟妇一区二区三区| 色香综合天天影视综合| 美日韩一二三区| 久操高青| 久7色| 九九无码视频| 国产极品一区二区三区三州| 成人性爱av.com| 日韩免费av片高清无码| 97亚洲在线| 色综合1991| 天天综合网AV91| 色婷婷在线视频精品导航| 色狠狠色| 99热亚洲| 97精品国产97久久久久久| 无码聚合| 91狼人| 日日操丁香五月天| 亚洲精品啪视频| 欧美日韩国产另类综合| 国产日韩欧美操逼视频| 永久免费av无码网站国产app | 99只有精品| 一级A啪啪啪啪| 亚洲AV无码久久久国产精品| 日本在线视频导航| 97综合在线| 亚洲女毛多水多21P| 欧美经典一区二区三区| 芊芊操逼视频无码| 亚洲美女自拍偷拍视频| 欧美日韩国内不卡| 免费一级视频特黄色大片| 久久久久国产精品喷潮免费观看臀 | 国产成人精品日本视频| 激情小说五月天| 欧美日韩 强奸乱伦| 免费伦费视频在线观看| 可以在线观看AV的网站| 激情接吻视频久久久久久| 亚洲精品乱码久久久久久蜜桃麻豆 | 国产农村妇女精品一| 香蕉一区二区三区在线视频| 人妻酒店出差被中出免费在线播放| 女人一区| 97少妇人妻中文字幕久久| 后入日本1234| 国产无马在线| 人人做人人妻人人夜视频| 国产成人bd在线观看| 超碰人人干| 亚洲人精| 上特色A在线| 日韩有码中文字幕女同性恋| 麻豆一区二区AV天美| 9久9久| 天天拍夜夜| 97在线免费观看| 17c在线成人免费A片观看| 熟女精品va中文字幕| 一级特级aaaa毛片免费观看| 色色五月天激情| 校园春色亚洲欧洲| 超碰97久| 福利视频一区二区微拍| 99999无码| 1.igao73.com 加入收藏 免费专区 国产精品 中文字幕 日韩精品 欧美精品 精彩 | 中文字幕在线2| 无套后入双马尾| 秋霞成人一级在线观看| 国产日本熟女顶级一区二区三区视频| baiduhicn.com。| 欧美综合另类| av国产无码| 草b在线| 凹凸 69堂 在线播放| 97天堂| 人、人、摸,人、人、草| 内射中出日韩在线观看视频| 600国产精品视频| 亚洲导航深夜福利| 国产精品久久久久久久久久久久久久久久 | 九九十八精品| 国产精品一区二区a| 性爱久久| av一区二区三区不卡| 99在线免费观看| 久久久噜噜噜久久人妻| 爆操无码| 欧美日韩小说| 在线另类| 1000部熟女视频在线观看| 激情综合色| 久久这里只精品| 亚洲精品 大香蕉| 日本在线999| 日本免费中文一区二区三区四区| 大逼色网站| 亚洲欧洲综合视频在线| 亚洲色图 91| 韩日无码在线观看| 久久伊人最新网址视频| 天天日天天射天天干| 91影库| 青青草久久在线| 国产女性无套 免费观看| 熟女91网| 嗯……啊…嗯嗯…啊…好舒服| 日韩性爱小视频| 久久仑合| 久久久A∨| Av手机版天堂网| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 97国产精品久久久久| 在线播放中文字幕| 亚洲免费精品一区| 俺去俺来也在线www| 后入式免费视频| 国产a级精品| 入口操逼网站| 小日子操bb在线看| 天天综合97| 97草草| 久久夜夜夜夜| 人妻美腿丝袜制服诱惑综合天堂-| 色欲蜜臀AV| 91网站18禁| 传媒在线观看一区二区三区| 成人精品一区二区三区| 久久久久中出| 天天影视综合网欧美精品| 久久AV无码网址| 性爱视频免费网址| 蜜乳中文字幕a在线| 蜜臀99久| 97爱| 欧美精品二区视频在线| 色吧5亚洲| 亚洲国产成人精品无码专区| 温婉少妇玩3p| 国产一区二区啪啪视频| 亚洲色诱惑| 久久婷婷影院| 91大胆欧美| 中文字幕一区二区三区蜜臀| 国产怡红院| 中文字幕人妻色偷偷久久皮| 欧洲乱码视频| 一区超碰一区| 欧美激情1区| 超碰97人妻| 黄色大片免费在线| 影音先锋中文字幕日本好一区二区| 美女视频尤物网在线看| 国产成人免费观看在线视频| 婷婷视频网| 嗯嗯嗯嗯啊啊啊好紧好大| 少妇诱惑视频| 精品一级| 精品无码不卡视频| 欧美久热| 亚洲怡春院| 99999精品| 八戒无码国产午夜福利| www激情| 人妻社区男人天堂| 九t超碰| 操操吧亚洲乱伦视频| 天天做日日爱夜夜爽| 蜜色网色哟哟| 中文字幕视频二区| 26uuu国产成人综合| 东京太热久久久| 青青草原成人| 亚洲一区二区三区四区视频| 国产一区麻豆免费观看| 国产一区二区二区按摩精品啪视频| 北约熟女超碰| 国产精品亚洲四五区在线观看| 蜜桃臀一区二区aV| 国语国产操逼伊人AV网| 久久视频少妇美女| 天堂俺去俺来也www久久婷婷| 最新欧洲欧美日本激情网站| 欧美激情一| 国产精品视频一区二区三区八戒| 日韩天天本| 亚洲欧美日韩二区视频| 青青欧洲黑| 亚洲中文国际强奸字幕| 精品人妻视频一区二区在线播放 | 天天视频网站黄| 亚洲天堂色图| 亚洲日韩视频二区| 2001天天操| 99热在线播放| 99无码视频| 日日AAvv| 爱射综合| 大香蕉淫人网| 久久综合乱子伦国产免费| 操熟女91| 9999伦理视频| 免费中文综合精品| 91天天爱| 免费一级视频特黄色大片| 午夜AV污污污| 91丨九色丨国产打屁股| 91欧美经典| 亚洲……91| 日韩免费高清大片在线| 曰本91情色| 国产成人亚洲精品无码古代早漏男| 草久久久| 亚洲乱熟女一区二区三区大香蕉| 97色在线视频| 一本一首道人妻少妇免费久久| 99久国产精品午夜性色福利| 欧美丝袜美女电影一二三四区| 欧美一级特黄淫片在线观看| 超碰 国产熟女精品一区| 国产高清无码一区二区三区四区皇冠| 激情小说在线视频| 欧美人妻另类在线| 尤物av网站| 手机看av网站在线看| 九九九九久久久久| 国产精品乱码久久久、久久| 少妇蜜汁| 亚洲综合婷婷| 久干9操| 精品视频在线观看| 欧美成人精品一区二区男人蜜臀| 四虎 精品 WWW| 日本在线播放不卡一区| 亚洲h片在线免费观看| 天堂男人网| 校园春色 亚洲| 中文字幕天天天天天| 裸体美女免费看网站青草| gogogo免费高清看中国国语| 婷婷爽人人婷婷爽视频| 干B网| 老熟女综合网 | 视频一区二区三区精品| 大香蕉中文在线| 少妇人妻在线| av日韩中文字幕| 久久久久久久久久久久久女过产乱-少妇高潮一区二区三区喷水-成人AV | 久久美女国产| 国产精品久久天天干| 久久精品小视频| 天天天天操| 亚洲丁香花色| 色婷婷狠狠| 超碰免费在线| 91久久精品蜜臀| 国产九月婷婷| 天天看综合网| 日日夜夜草草草| 激情小说亚洲视频| 蜜桃臀av一区二区| 最新亚洲黄色免费电影| 国产成人拍国产亚洲精品| 国产福利电影| 人人操人人摸人| 992这里有精品| 国产四虎在线| 亚洲男人天堂视频| 永久电影三级在线观看| 中国一级操逼视频| 欧美熟女少妇| 97超碰色屌| 噜噜噜噜天天狠狠| 亚洲图片激情综合另类| 五月综合色| 久久久久亚洲Av无码专区老牛影视| 九九aV| 色姑娘综合网| 免费A片三p视频| 国产h片在线观看视频| www.久久99| 91久久久老司机| 国产精品扒开腿做爽爽爽视频| 嫩草美女久久| 中文字幕二区日韩天堂| 亚洲欧洲无码一区夜| 麻豆国产97在线| 百度百度日本操逼| 91精品91久久久久77777| 亚洲色宗合| 美国一区二区免费视频| 国产精品视频播放| www.亚洲黄色| 精品国产一区二区三区久久久蜜臀| AV天黑人| 操人91| 物业黑人 AV一区| 视频黄色国产一级| 色欲色香天天天综合网www-亚洲综合国| 这里都是精品| 91丨九色丨国产打屁股| 久久人体一区二区| 色狠狠 - 百度| 999 久久久| 思思热久久成人| 日韩精品大香蕉伊人在线| 久久久精品中文字幕爱豆| 精品v1区| 人人操人人插人www| 亚洲精品白丝| 一区二区娱乐网站| 久久久久夜夜夜夜| 白丝少妇一区二区| 久久久久国产精品喷潮免费观看臀| 97在线观看免费视频l| 国产自产自拍| 97碰久久| 亚洲素人网| 狠狠色婷婷7777久| 青青免费在线视频一区| 97超碰色中文字幕| caopeng97| 天天干人人干天天日97| 天天干干天天干干| 91女网站| 97ai亚洲| 亚洲美女色图| 啊啊啊好爽快点啊啊啊嗯嗯| 精品人妻视频入口| 91精品国| 狠狠图片青青草| 亚洲色诱惑| 中文字幕丰满人妻日本| 综合情欲网| 91色爽欧美| 国产精品秘 福利姬在线观看| 99久久国产精品免费高潮| jiujiujiujingpin| 97亚洲资源| 长长久久免费视频| 夜夜草网站| 岛国视频一二三区| 强奸乱伦AV一天堂网| 夜夜夜爽www精品视频| 操美女人妻| 欧美夜夜狠| 久久肏大逼| 人妻系列无码专区中文有码| 日本黄色精品专区网站| 欧美gv在线观看| 在线97视频| 大香蕉99re| 亚洲欧美97√| 性生活性生大爱77AV国产| 婷婷五月天无码 | 国内外激情在线| 好淫网一二三视区| 欧美国产视频| 男人网站婷婷| 五十路人妻在线| 日韩精品第3页| 综合激情97| 青青草视频爽一爽| 抽插爽| aaa淫乱视频| 曰本精品久久久| 午夜欧美J进J出白浆流出久久久| 18一区二区三区| 丁香六月天| 欧美专利1区2区3区4区5区免费| 色情综合网| 一级黄碟在线看| wwwcaobibi| 极品一区二区三区免费| 丝袜色综合| 天天综合网亚洲综合网| 亚洲Av诱惑| 7777奇米影视久久| 人妻99p| 天堂av2019| 久久99999| 精品二区三四区五电影| 我想要 啊 啊 啊| 国产一区二区免费福利片| 中文字幕一区二区日韩网| 日韩精品1区2区中文字幕| 九九热在线精品视频| 91+欧美| 91欧| 亚洲欧洲精品视频发布| 好吊色在线观看| 99久在线精品99re8| 2019午夜福利视频| 沈阳熟女高潮对白视频| 国产高清成人mv在线观看| 五月天激情视频| 韩国女主播青草在线| 97资源亚洲| 欧美aaaaaaa| 亚洲国产综合久久天堂| 欧美一区二区三区成人性生活| 91性网| 欧美特大黄一级片片免费| 四虎影库国产精品免费| 91精品婷婷国产综合久久| 91啦人妻| 欧洲精品一区二区三区| 性爱乱伦视频免费| 亚洲精品一卡二卡三卡福利视频网站| 美国精品国产精品| 精品一区二区三区四区女 | 久久黄片国产一区二区| 四虎视频在线观看| 亚洲成人福利电影免费 | 国产精品国产自产拍高清AV| 99精品国产户外露出| 男人干美女| 日韩国产乱子伦App| 久久久久幕乱码| 3571色综合一区二区二区| 一区二区三区高清| 精品一区二区三区四区女| 性在久久久久久| 九色黄站| 国产在线观看91精品一区| 午夜福利无毒不卡| 看看小穴| 操逼操网| 久久国产AⅤ| 韩日自拍| 亚洲色9| 亚洲精品日韩国产欧美| 欧洲黄色网| 高清无码学生妹高潮| 妇女视频网站| 91操碰| HEYZO高无码国产精品227| 97se亚洲综合自| 91影视亚洲| 午夜精品99久久久久传媒| 熟女六十路| 隔壁邻居波多野结衣中文字幕| 男人久久天堂| www.AV有限公司一区| 中文字幕二区日韩天堂| 婷婷久久综合久| 国产精品自在线发布| 欧美性爱91| 日韩欧美操逼xxx| 一区二区三区四区理论片| 青青久久久| 免费超碰97久久| 99综合自拍| 亚洲综合在线高清| 啊嗯好大视频在线观看| 啊啊啊好爽快点啊啊啊嗯嗯| 九九黄色网| 五月婷婷性爱| 人人喜人人妻| 少妇被玩视频二三区| 亚洲国产剧情少妇激情| 亚洲 中文 女同| 伊人青青草久久| 国产丰满少妇久久久精品影院| 区一二区日韩亚洲乱码av电影| 五月天丁香欧洲日韩| 亚洲中文字幕乱码无码一区二区| 91在线视频免费中出| 欧美色66| 啊啊啊 在线| 伊人操| 麻花豆传媒剧国产MV出差| 日韩图区 偷拍| 丰满人妻一区二区三区大胸懂色| 综合色99| 亚洲高清内射| 人妻大香蕉| 97资源久久| 尤物黄色在线观看网站| 欧美中出1| 美女裸体麻豆天美蜜桃91| 国产高潮AA片免费看| 婷婷激情五月综合| 三级日韩一区二区三区| 国产区性爱在线视频秋霞豆| 男人的天堂啪啪| 91美女色视频亚洲| 久久久久99999| 亚洲精品影视老司机| 亚洲AV小说| 大色网久久| 高清国产成人无码| 密臀在线免费观看| 欧美综合1性辶| 人摸人人操人| 射丝袜大香蕉| 吖在线不卡一区二区国产剧情| 蜜臀少妇一区二区| 久久男人| 久久久爆乳翘臀一线天伦理视频| 校园春色宗合网| 久操网无码在线| 亚州综合AⅤ| A级国产欧美激情在线| 一色网男人的天堂| 久久久四区| 亚洲天堂性爱| 久久系列| 人妻久久久| 97资源站国产精品| 大香蕉九九| 欧美综合色,www| 天天插天天干| 94色色电影网| 九九精品美女高溯喷水| 天天肏视频| 青青草精品| 欧美精品23| 久久9精品网站| 免费看日产一区二区三区| 啊啊啊啊好疼| 自拍盗摄一区| 亚洲精品无码少妇久久| 亚洲丝袜诱惑| av天天在线| 婷婷深爱五月| 中文字幕精品免费一区二区| 欧美情色贴图| 成人情色一区二区| 少妇熟女1区2区3区| 精品少妇人妻一区二区三区| 欧美日不卡| 久操com| 久一区久久蜜桃| 婷婷五月天无码 | 午夜精品人妻二区三区| 久草久热| 激情久久久| 日韩人妻中文视频| 欧美第一页| 97操碰| 熟女91网站| 日韩人妻播放| 麻豆性爱视频在线播放| 能看的av| 丁香五月偷拍| 无码人妻一区二区一牛影视| 激情五月综合开心五月| 亚洲欧美第一页| 激情欧美97| 日本性感人妻91| 青青草这里只有精品| 超碰97久久国| 视频黄站| 丰满人妻-区二区三区免费看| 亚洲美女高潮喷水视频| 干美女人妻| 综合亚洲欧美| 亚洲色图欧洲| 一区在线精品中文字幕| 亚洲国产丝袜熟女av| 男女无套 免费网站| 黄色免费一级在线毛片| 天天干天天操天天操夜夜操天天操 | 国产91 丝袜在线播放00-百度| 亚洲做性| 久久精品一区二区一8| 蜜乳中文字幕a在线| h4610国产人妻| 日本污ww视频网站| 厕所偷拍在线| 亚洲情色综合网| 一区二区影视| 操婢日韩| 九九aV| 日日日骚女人精品| 午夜一区| 欧美精品久久久久久久丰满| 黄色av片三级三级三级免费看| 丁香五月AV| 日韩激情视频| 东京热av影院| av日韩在线观看电影| 67914亚洲精品| 啊啊啊不要啊啊受不了了视频在线 | 二色av| 国外91| 国产最火爆久久国产网站网站| 亚洲成?V人片在线观看福利| 精品人妻一区二区免费蜜桃| 久久久久久久久9| 北约熟女超碰| 久久有碼| 91一区二区三区蜜桃| 五月婷婷无码| 成年人免费观看网站| 日韩人妻有码免费视频| 人人妻人人操人人乐| 蜜臀Av一区二区三区| 秋霞久久亚洲精品成人| 91成人社区| 久久久久久亚洲中文| 欧美日韩黄色片一区二区三区四区人与兽做爱 | 男女啪啪网站免费视频| 欧美视频在线第3页| 欧美性Fer办公室秘书| 久久黄色性爱视频| 国产黄色视频久久| 国产精品久久发布| 综合五月天| 欧美性爱五月天| www欧美91| 极品粉嫩一区二区| 国产精品日本无码A片| 婷婷色网| 久久精品高清AV| 夜夜欧美| 久久夜夜夜夜| 人人扣人人操| 手机看片91人妻| 夜夜嗨绯色| 1769精品一区二区三区| 极品色| 97色论| a在线视频免费观看| 久久免费9| 男人网站婷婷| 婷婷午夜| 国产高清MV操逼视频| 丝袜AV一区二区三区| 天天天天天天天天综合| 亚洲女毛多水多21P| 久久久精品网站| 九七人妻在线| 亚洲成人精品久久久| 亚洲精品日日夜夜52| а√天堂资源官网在线资源| 欧美日韩美女精品久草一区二区三区 | 久久久久久久97| 国产久久久久影院老熟女| 欧美精品成人亚洲| 99久久9| 国产精品久久久久久无码红治院| 欧美性色网| 久久天堂网| 208天天久久九九九| nuu12国产麻豆精品| 97久久久网站| 日韩精品资源专区二区| 99re这里只有精品中心播放| 91干熟女| 国产精选三级在线观看| 亚洲成a人片在线观看中文!!!| 综合国产影视三级| 国产精品福利视频播放| 一区二区三区美女超清| 国产三级片在线观看| 色色九区| 午夜性刺激视频免费观看| 国产精品一区二区三区四区五区| 精品人妻一区二区三区蜜桃视频| 欧美综合自拍亚洲综合图| 超碰97在线中文| 欧美最婬乱婬爆婬牲视频| 亚欧美综合| 伊人超碰97| 日韩亚洲欧美中文字幕| 国产精品人妻无码久久久老鸭窝| 中国AAAAAA黄色片| 欧美日韩国产三级黄色| av一区二区三区 中文| 久久九九综合| 18岁禁 茉莉成人久久| 久久 久久国内精品亚洲| 夫妻AV网站| 国产日韩精品suv| 日va操| 日本天天吊| 97超碰人操| 91丝袜在线观看| 国产精品久久久久久久AV大片| 日本精品第一视频在'| 亚洲人成色9999精品久久| oumeizonghese,www| 国产精品久久泡妞网站| 人人操人人干xxx| 成人短视频在线观看| 91夜夜蜜桃臀1区2区3区| 99re这里只有| 亚洲成?V人片在线观看福利| 亚洲欲色9532548967一区| WWW美腿丝袜香蕉中文| 亚洲国产精品无码AV久久| 日本在线视频导航| 亚洲熟女乱熟乱熟妇综合网二区| 国产91 丝袜在线播放 | 约操熟妇| 午夜精品久久久99| 亚洲天天操| 中文字幕在线日亚州9| 综合97亚洲| 天天干人人干天天日97| 久久熟妇五十路一区| 国产精品一区二区三区免费视频| 国产区性爱在线视频秋霞豆| 日韩av色图| 国产精品嫩草影院午夜两性| 亚州色站 日韩电影| 精品国产乱码久久| 亚洲综合97中文网| 欧美激情一区| 欧美se亚洲| 1人人看人人摸人人操| 熟妇精品juliaannAV| 无码区蜜乳| 少妇色综合| 91粉嫩萝控精品福利网站_精品影音先锋国 | 涩五月婷婷| 麻豆久久一区二区三区| 日本熟人妻中文字幕在线|...久久国产精品-国产精品_日本一区二区三区中文字幕 | AV老汉| 天天色天天干天天爱| 亚洲图片 激情小说| 手机在线人成免费视频| 精品十八在线观看| 熟妇高潮一区二区免费视频| 影音先锋每日最新资源在线观看| 骚逼一区二区| 中字乱伦AV| 秋霞Av理论一级在线| 99re只有精品| 99热超碰| AV和黑人在线播放| 熟女少妇一区二区三区| 有码免费观看| 免费看一级a性色生活片久久无| 亚洲色电影在线| 91丝袜美腿片| 又黑又大又粗| 日本网色| ..日韩av毛片精品久久久| 狠狠入| 操老熟女AV| 亚洲色图国产另类| av优播| 一区二区偷拍拍视频| 日韩成人精品视频自拍| 亚洲午夜未满十八勿入网站日本又色又爽又黄 | 熟女被操视频网址| 97在线精品观看视频| 日韩一级欧美一级国产一级台湾 | 91网九色蝌蚪操熟女| 麻豆精品.欧美精品.日韩精品.| 在线情色电影 91大 | 制服中出中文人人精品| 欧美精品丝袜久久久中文字幕| 欧美一级A片在线看视频性色| 18禁免费视频| 午夜福利一区二区影院| 午夜一级免费毛片| 丁香五月激情综合| 99久久无码| 久极品在线观看| 亚洲综合春色| 看黑丝美女操逼青青网站| 老熟女91av| 黄色高清久久无码依人| 97se综合网| 粉嫩AV一区夜夜嗨| 欧美最大综合网| 白嫩妹子国产骚| 欧美亚洲AN| 国产精品九九| 九九九九九九九九九国产精品| 欧美美女视频| 亚洲人体视频在线观看| 一本久道在线综合视频| 国产一区二区三区导航| 午夜天堂啪啪| 亚洲精品天天影视综合网| 好好的日:com久久九九| 久操| 精品一区二区三区免费古装毛片香港三级日本三级人妇 | 亚洲AV色图一区| 麻豆亚洲AV成人无码久久精品| 91精品国产91久久青草| 日韩图区 偷拍| 色综合一区二区三巨| 天天天天天天天天综合| 美女十八禁| 26uuu偷拍亚洲欧洲综合| 大香樵伊人网| 天天爱综合网| 国产精品久久天天干| 91在线无码精品秘 软件| 成人日韩中文字幕| 欧美亚洲综合高清在线| 亚洲中文字母在线播放| 夜夜综合| 免费久久一级毛片大黄| 另类视频在线| 91制服丝袜| 久久精品国产亚洲AV无码电影| 蜜桃久久久久久久| 91n欧美| 亚洲午夜免费狠狠干| 夜夜国自区| 操逼视频免费日韩无码| 嗯嗯啊啊视频一区二区三区| 国产在线观看一区二区三区| 婷婷五月天网| 91性片| 爽爽淫人网| 天美精品原创av片国产| 婷婷色一区| 亚洲av青草久久一区二区| av中文在线| 少妇无码999| 日韩国语字幕| 男插女青青影院| 97精品久久久久久久| 狠狠婷婷亚洲中文综合久久| 亚洲熟妇自偷自拍另欧美| 欧美 亚洲| 色噜噜国产在线| 国产精品永久免费10000| 大香蕉欧美伊| 中国女人内射6XXXXX| asc国产精品| 射 色综合| 精品少妇人妻av久久免费| 97国产天堂岛| 久热伊人| 啪啪啪精品| 天天操狠狠日夜夜干超大胆开放com大香蕉视频在线观看 | 亚洲深夜福利| 草久久久| 国产成人精品亚洲日本| 亚洲图片第一页| 国产女人9999| 亚洲天堂区| 精品久久久久av影院| 亚洲高清欧美总合| 亚州高清色综合| 狠狠操狠狠| 无码WWW免费视频网站| 九九热精品视频六| 97精品国产手机| julia高潮后不停追击中出| 久久精品欧美一区二区三区不卡| 伊人网在线点播| 久久熟女久| 蜜桃久久久久久久| 国产原创剧情在线丝袜| 日韩欧美成人性爱在线| 少妇被c 黄 免费观看| 91痴汉| 国产精品乱码久久久久久久| 99xav| 妇女视频网站| 67194无码不卡| 男人天堂2012| 91色艳| 人人妻人人色| 黑丝内射一区二区三区| 成人日韩欧美| www.婷婷六月天| 黑丝少妇在线观看| 国产精品一区二区三区在线密挑| 久99视频| 乱人伦 国语对白:视频直接看| 我要看免费韩日黄片| 色爱国产| 久久日韩毛| 亚洲91色在线| 性欧美精| 91精品91久久久久77777| 一本色道熟妇| 国产精品美女视频诱惑| 欧美v亚洲v综合v国产v妖精| 午夜性生活av免费在线看| www.99色| 日亚韩精品视频二区三| 99久久9| 亚洲有薄码区日本系列中文字幕| 偷窥自拍亚洲色图| 啊啊啊啊啊,啊啊啊啊好舒服,操我舒服啊啊啊 | 欧美日韩不卡传媒| 国产一级内射高清视频| 翔田千里无码中出中文字幕| 日本性爱少妇| 91在线|亚| 少妇高潮喷水无套久久久久久| 国产尤物在线三区| 国产又黄又粗的视频| 欧美日韩国内不卡| 超碰 另类 欧美| 午夜精品久久久久久久| 一级做受视频免费是看美女| 国产精品久久久无码AV网站| 亚洲色图久久成人| 96精品一区| 91东京热男人的天堂| 综合影院亚洲| 欧美三级偷拍| 91三级理论片播放器| 欧美最婬乱婬爆婬性视频| henhen91| 人人透人人操| 91N综合网在线| 艹精品| 口爆欧美91| 国内精品嫩模A∨私拍小视频| 99热这里只有精| 欧美色图小说综合| wwwcaobibi| 女上位精品在线| 九月丁香综合网| 金典av| 男人的天堂1024| 精品国产乱码久久久久久免费| 国产久久久久影院老熟女| 丝袜狂射91| 国产乱伦亚洲色图高清无码| 澳门人妻久久| 四虎午夜影院| 亚洲网污污污污| 操逼操逼逼操操逼91| 日日躁天天躁狠狠躁| 91久操| 青娱乐福利99| 色综合20p| 婷婷色五月激情| 99久久国产精品免费高潮| 午夜福利免费精品视频| 蜜桃一区二区三区| 久热婷婷| 在线人成亚洲视频免费观看| 国产精品久久久久久久久久久久久久久| 国产精品探花色| 拍拍拍拍大尺度黄色三级片拍拍拍拍拍照| 巨爆乳肉感一区二区三区竹菊影视| 97这里有精品| 日本不卡二三区| 少妇超碰在线| 岛国网址国产 | 97视频620| 女优视频第10页| 欧美另类综合久久| 欲香欲色| 亚洲区 欧美区| 狠狠躁天天躁日日躁| 欧美亚洲丝袜人妻制服99| av网站在线观看了| 久久精品久| 日韩欧美~中文字| 日韩精品9区| 欧美高清性猛交| 夜夜操天| 超碰国产在线| www欧美性爱| 亚洲精品天堂久久A∨51成人漫| 五月丁香黄色网| 欧美 亚洲 在线| 99久久com免费视频′| 韩国女主播青草福利视频| 欧美视频中文字幕区| 亚洲第2页|