亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

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

大型C++工程CMakeLists管理:以目標(biāo)為核心的構(gòu)建與組織

大型C++工程CMakeLists管理:以目標(biāo)為核心的構(gòu)建與組織 簡(jiǎn)介CMakeLists.txt 是 C 大型工程構(gòu)建的核心這份資源以可運(yùn)行的示例工程為核心面向需要掌握 CMake 組織方式的開(kāi)發(fā)者講解如何利用 add_subdirectory、target_link_libraries、find_package 等命令劃分模塊、管理依賴并生成跨平臺(tái)構(gòu)建文件。資源壓縮包共 10 個(gè)文件包含 5 個(gè) txt 構(gòu)建腳本、3 個(gè) cpp 源文件和 2 個(gè) h 頭文件體積僅 5KB結(jié)構(gòu)緊湊適合按目錄逐層比對(duì)學(xué)習(xí)。包內(nèi)示例從項(xiàng)目初始化開(kāi)始到源文件收集、目標(biāo)屬性設(shè)置、依賴查找、測(cè)試集成與安裝步驟基本覆蓋了大型工程對(duì) CMakeLists 的主要使用場(chǎng)景示例工程包含公共工具與輸入輸出等獨(dú)立子目錄每個(gè)目錄都有對(duì)應(yīng) CMakeLists便于觀察項(xiàng)目的分層組織方式并理解各命令在工程中的實(shí)際作用。已有 1422 人學(xué)習(xí)適合作為 CMake 入門后的實(shí)戰(zhàn)參考讀者可對(duì)照示例中的命令和目錄組織快速遷移到自己的多模塊項(xiàng)目中。1. 大型 C 工程用 CMakeLists 管理先分清“組織問(wèn)題”和“構(gòu)建問(wèn)題”接手過(guò)幾個(gè)用 CMakeLists 管理的大型 C 工程后我最大的感受是大多數(shù)工程“難改、難加、難查”的根源不是某個(gè)庫(kù)沒(méi)鏈接對(duì)而是 CMakeLists 的組織方式在一開(kāi)始就沒(méi)把“目標(biāo)target”當(dāng)作核心。很多從業(yè)者拿到一份大數(shù)據(jù)量的代碼庫(kù)第一反應(yīng)是堆include_directories和add_definitions結(jié)果不到兩萬(wàn)行代碼構(gòu)建系統(tǒng)就成了不敢動(dòng)的黑匣子。這份資源的價(jià)值很直接它用一個(gè)可復(fù)現(xiàn)的大型工程實(shí)例把a(bǔ)dd_library、target_link_libraries、add_subdirectory、install和CTest這些基礎(chǔ)命令串成一套“按模塊組織、按層依賴、按需導(dǎo)出”的工程結(jié)構(gòu)。適合手里有多個(gè)模塊、多人協(xié)作、或者剛從單文件編譯轉(zhuǎn)向工程化構(gòu)建的 C 開(kāi)發(fā)者。讀完你能學(xué)會(huì)的不只是命令而是“新模塊來(lái)了該往哪放、CMakeLists 該怎么分層、變量該在哪定義”這一整套決策邏輯。2. 把“目標(biāo)”當(dāng)?shù)谝还馻dd_library 與 target_include_directories 的用法重構(gòu)2.1 為什么現(xiàn)代 CMake 不再推薦全局 include_directories在大型工程里include_directories的最直接問(wèn)題是“泄漏”。你給 A 模塊加了某個(gè)第三方頭文件路徑B 模塊只要在同一個(gè)目錄樹(shù)下編譯也可能意外拿到這個(gè)路徑。短期看是方便長(zhǎng)期看就是頭文件沖突和“我明明沒(méi)包含這個(gè)目錄為什么宏定義變了”的玄學(xué)問(wèn)題。CMake 官方和大多數(shù)一線團(tuán)隊(duì)的共識(shí)是所有頭文件路徑、編譯選項(xiàng)、宏定義都盡量綁在目標(biāo)上。也就是說(shuō)用target_include_directories替代全局的include_directories用target_compile_definitions替代add_definitions。這份資源里給出的典型做法是這樣add_library(module_a STATIC src/module_a.cpp src/module_a_helper.cpp ) target_include_directories(module_a PUBLIC $BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include $INSTALL_INTERFACE:include ) target_include_directories(module_a PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src ) target_compile_definitions(module_a PRIVATE MODULE_A_BUILDING_LIB )這里最關(guān)鍵的是PUBLIC、PRIVATE、INTERFACE三個(gè)可見(jiàn)性關(guān)鍵字。PRIVATE表示當(dāng)前目錄只對(duì)module_a自己編譯時(shí)有用PUBLIC表示鏈接了module_a的其他目標(biāo)也會(huì)自動(dòng)帶上這個(gè)頭文件路徑INTERFACE通常用于純頭文件庫(kù)或者只導(dǎo)出依賴而不參與編譯的庫(kù)。資源里對(duì)這三者的使用場(chǎng)景解釋得很清楚一個(gè)模塊的內(nèi)部實(shí)現(xiàn)頭文件放PRIVATE對(duì)外暴露的接口頭文件放PUBLIC如果是接口庫(kù)header-only則全部用INTERFACE。參數(shù)上要注意$BUILD_INTERFACE:...和$INSTALL_INTERFACE:...是生成器表達(dá)式。前者在源碼樹(shù)內(nèi)編譯時(shí)生效后者在install之后、被外部項(xiàng)目引用時(shí)生效。原因很簡(jiǎn)單安裝后的目錄結(jié)構(gòu)和源碼樹(shù)目錄結(jié)構(gòu)往往不一致如果寫(xiě)死${CMAKE_CURRENT_SOURCE_DIR}/include外部項(xiàng)目拿到的路徑就是錯(cuò)的。這個(gè)細(xì)節(jié)是很多人把庫(kù)安裝出去之后發(fā)現(xiàn)“找不到頭文件”的頭號(hào)原因。2.2 用 target_link_libraries 表達(dá)模塊依賴而不是直接寫(xiě)絕對(duì)路徑大型工程里最怕的就是手寫(xiě)link_directories加絕對(duì)路徑。一旦某個(gè)庫(kù)換目錄或者從靜態(tài)庫(kù)換成動(dòng)態(tài)庫(kù)CMakeLists 就要到處改。資源里反復(fù)強(qiáng)調(diào)的依賴表達(dá)方式是add_executable(main_app src/main.cpp ) target_link_libraries(main_app PRIVATE module_a module_b external_lib )這里PRIVATE的意思是main_app自己需要鏈接這些庫(kù)但main_app如果是庫(kù)它的使用者不需要知道這些依賴。如果main_app是個(gè)庫(kù)并且它對(duì)外暴露的頭文件里直接引用了module_a的類型那么這里就應(yīng)該用PUBLIC。這個(gè)決策聽(tīng)起來(lái)簡(jiǎn)單實(shí)際工程里經(jīng)常有人為了“反正都能編譯過(guò)”所有鏈接都寫(xiě)PUBLIC結(jié)果就是接口庫(kù)的依賴被成倍放大外部項(xiàng)目鏈接時(shí)冒出一堆“沒(méi)必要的傳遞鏈接”最后變成鏈接順序和循環(huán)依賴問(wèn)題。關(guān)于鏈接順序資源里有一個(gè)常見(jiàn)做法是被依賴的庫(kù)放在依賴者的后面。比如main_app依賴module_amodule_a依賴module_b那么寫(xiě)鏈接時(shí)以main_app ... module_a module_b的順序排。這不是 CMake 強(qiáng)制的但 GNU 鏈接器在處理靜態(tài)庫(kù)時(shí)是單遍掃描順序錯(cuò)了就會(huì)出現(xiàn)undefined reference而且這個(gè)報(bào)錯(cuò)出現(xiàn)得很晚排查起來(lái)非常費(fèi)勁。后面避坑章節(jié)里我會(huì)專門講這個(gè)現(xiàn)象。2.3 接口庫(kù)INTERFACE library在大型工程里的實(shí)際用途大型工程里有一類比較特殊的目標(biāo)叫接口庫(kù)它不產(chǎn)生任何編譯產(chǎn)物只用來(lái)傳遞頭文件路徑、編譯選項(xiàng)和依賴。資源里的例子很典型一個(gè)公共的編譯選項(xiàng)集合或者一個(gè)跨平臺(tái)的平臺(tái)宏定義集合都可以做成接口庫(kù)。add_library(common_warnings INTERFACE) target_compile_options(common_warnings INTERFACE -Wall -Wextra -Wpedantic ) target_compile_definitions(common_warnings INTERFACE _GLIBCXX_USE_CXX11_ABI1 )然后在其他目標(biāo)上統(tǒng)一使用target_link_libraries(module_a PRIVATE common_warnings )這么做的好處是工程里所有模塊共享同一套警告選項(xiàng)和 ABI 宏定義想調(diào)整時(shí)只改一處。如果直接用add_compile_options效果雖然一樣但沒(méi)法區(qū)分“哪個(gè)目標(biāo)用了哪套選項(xiàng)”將來(lái)做單元級(jí)編譯緩存或者單獨(dú)關(guān)掉某個(gè)模塊的警告時(shí)會(huì)很痛苦。資源里把接口庫(kù)當(dāng)作“配置的載體”而不是“代碼的載體”這個(gè)思考方式對(duì)大型工程非常實(shí)用。3. 大型工程的目錄結(jié)構(gòu)設(shè)計(jì)add_subdirectory 與 CMakeLists 分層3.1 頂層 CMakeLists 只做三件事項(xiàng)目聲明、全局選項(xiàng)、子目錄聚合很多失敗的工程頂層 CMakeLists 動(dòng)輒幾百行變量定義、函數(shù)封裝、if分支全堆在一起。資源里給出的頂層結(jié)構(gòu)非常克制通常只有三個(gè)部分cmake_minimum_required和project聲明、全局構(gòu)建選項(xiàng)如構(gòu)建類型、安裝路徑、測(cè)試開(kāi)關(guān)、以及按順序add_subdirectory子模塊。一個(gè)典型的頂層CMakeLists.txt長(zhǎng)這樣cmake_minimum_required(VERSION 3.16) project(large_engine LANGUAGES CXX) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) option(ENGINE_BUILD_TESTS Build unit tests ON) option(ENGINE_BUILD_EXAMPLES Build examples OFF) if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) set(CMAKE_BUILD_TYPE Release CACHE STRING Build type FORCE) set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS Debug Release RelWithDebInfo MinSizeRel) endif() add_subdirectory(modules) add_subdirectory(apps) if(ENGINE_BUILD_TESTS) enable_testing() add_subdirectory(tests) endif()注意這里沒(méi)有出現(xiàn)任何模塊相關(guān)的源文件路徑也不做業(yè)務(wù)變量傳遞。set(CMAKE_CXX_STANDARD 17)是全局統(tǒng)一的標(biāo)準(zhǔn)版本避免出現(xiàn)兩個(gè)模塊一個(gè)用 C14 一個(gè)用 C17 導(dǎo)致的 ABI 問(wèn)題。CMAKE_CXX_EXTENSIONS OFF是關(guān)閉 GCC 的-stdgnu17擴(kuò)展保證代碼在 MSVC 和 Clang 下行為一致。資源里特別提到這個(gè)開(kāi)關(guān)不統(tǒng)一換編譯器后經(jīng)常出現(xiàn)“代碼在 GCC 能編在 MSVC 就報(bào)錯(cuò)”的問(wèn)題。3.2 模塊內(nèi)部每個(gè)模塊一個(gè) CMakeLists變量作用域用 directory 隔離資源把大工程拆成modules/、apps/、tests/三個(gè)頂層目錄每個(gè)目錄下的子模塊各自持有獨(dú)立的 CMakeLists。關(guān)鍵點(diǎn)是CMake 的變量作用域是 directory 級(jí)別的子目錄里set的普通變量不會(huì)跑到父目錄父目錄的變量也不會(huì)自動(dòng)泄漏到子目錄除非用CACHE變量。這意味著每個(gè)模塊的 CMakeLists 應(yīng)該自包含。比如modules/module_a/CMakeLists.txt# 這個(gè)文件只描述 module_a 怎么構(gòu)建 file(GLOB_RECURSE MODULE_A_SOURCES CONFIGURE_DEPENDS src/*.cpp src/*.cxx ) add_library(module_a STATIC ${MODULE_A_SOURCES}) target_include_directories(module_a PUBLIC $BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include ) target_link_libraries(module_a PRIVATE module_common )file(GLOB_RECURSE ... CONFIGURE_DEPENDS)是資源推薦的一種源文件收集方式。傳統(tǒng)觀點(diǎn)認(rèn)為 GLOB 不好因?yàn)樾略鑫募r(shí) CMake 不會(huì)自動(dòng)感知但CONFIGURE_DEPENDS讓 CMake 在構(gòu)建時(shí)重新檢查 glob 結(jié)果解決了這個(gè)問(wèn)題。不過(guò)要注意CONFIGURE_DEPENDS需要 CMake 3.12并且每次構(gòu)建都要做一次文件系統(tǒng)遍歷模塊數(shù)量多的時(shí)候會(huì)略微增加配置時(shí)間。資源里給出的取舍是模塊內(nèi)部文件多用 GLOB 減少維護(hù)成本模塊對(duì)外暴露的接口頭文件不推薦 GLOB因?yàn)轭^文件列表應(yīng)該顯式出現(xiàn)在安裝和導(dǎo)出描述里。3.3 共享變量和函數(shù)用函數(shù)封裝代替到處 set大型工程里避免不了共享一些邏輯比如“創(chuàng)建一個(gè)帶默認(rèn)選項(xiàng)的模塊庫(kù)”。資源里的做法是用function封裝function(engine_add_module target_name) add_library(${target_name} STATIC ${ARGN}) target_compile_features(${target_name} PUBLIC cxx_std_17) target_link_libraries(${target_name} PRIVATE engine_common) set_target_properties(${target_name} PROPERTIES POSITION_INDEPENDENT_CODE ON ) endfunction()然后模塊里只需要engine_add_module(module_c src/module_c.cpp )這里ARGN會(huì)接住函數(shù)調(diào)用里多余的參數(shù)也就是源文件列表。POSITION_INDEPENDENT_CODE ON表示生成位置無(wú)關(guān)代碼這是為了將來(lái)能鏈接進(jìn)動(dòng)態(tài)庫(kù)或者被python之類的宿主程序dlopen預(yù)留的。模塊多了以后你會(huì)發(fā)現(xiàn)這種封裝帶來(lái)的最大好處是新模塊的 CMakeLists 縮到十行以內(nèi)并且所有模塊的結(jié)構(gòu)完全統(tǒng)一檢查代碼時(shí)看一個(gè)模塊就等于看了一百個(gè)模塊。4. 從源碼樹(shù)到安裝包install 導(dǎo)出與 find_package 的完整閉環(huán)4.1 install 規(guī)則和 GNUInstallDirs大型工程最終要交付給別人用install規(guī)則寫(xiě)不好庫(kù)裝了等于沒(méi)裝。資源里的常見(jiàn)做法是引入GNUInstallDirs來(lái)統(tǒng)一安裝路徑include(GNUInstallDirs) install(TARGETS module_a module_b EXPORT engine_targets ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} ) install(DIRECTORY include/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})用${CMAKE_INSTALL_LIBDIR}而不是直接寫(xiě)lib原因很樸素不同 Linux 發(fā)行版對(duì)庫(kù)目錄有不同約定比如 Fedora 用lib64Debian 系用lib。GNUInstallDirs會(huì)根據(jù)平臺(tái)自動(dòng)選擇。這個(gè)細(xì)節(jié)看起來(lái)小但真正發(fā)布一個(gè)庫(kù)時(shí)如果路徑寫(xiě)死下游用戶很可能需要手動(dòng)改安裝路徑才能讓 pkg-config 或 CMake 找到。4.2 導(dǎo)出目標(biāo)和 find_package 的配合資源里把安裝后的工程消費(fèi)方式也講清楚了用EXPORT生成一個(gè) CMake 包配置文件下游用find_package就能拿到完整的庫(kù)目標(biāo)。具體寫(xiě)法install(EXPORT engine_targets FILE engine_targets.cmake NAMESPACE engine:: DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/engine )這樣做的意義在于下游項(xiàng)目不再需要用target_link_libraries(my_app ${ENGINE_LIBRARIES})那套老舊的變量式查找而是直接find_package(engine REQUIRED) target_link_libraries(my_app PRIVATE engine::module_a)命名空間engine::不是裝飾而是為了統(tǒng)一引用風(fēng)格并且避免和工程里其他同名目標(biāo)沖突。資源里還有一段關(guān)于生成engineConfig.cmake和engineConfigVersion.cmake的說(shuō)明用于支持版本檢查。這是大型工程發(fā)布時(shí)繞不開(kāi)的部分否則下游項(xiàng)目沒(méi)法聲明find_package(engine 1.2 REQUIRED)。4.3 安裝頭文件時(shí)保留目錄結(jié)構(gòu)頭文件安裝是另一個(gè)重災(zāi)區(qū)。很多工程的include/下是engine/module_a/...這種帶模塊名的嵌套目錄如果直接install(DIRECTORY include/ DESTINATION include)安裝出來(lái)的路徑會(huì)丟掉engine前綴嗎不會(huì)include/下了engine/目錄會(huì)整體裝過(guò)去。但我見(jiàn)過(guò)不少工程為了“扁平化”把engine/module_a/config.h硬生生復(fù)制成include/config.h結(jié)果就是下游代碼里#include engine/module_a/config.h全部失效。資源里的原則是安裝頭文件時(shí)保持源碼樹(shù)里的相對(duì)路徑結(jié)構(gòu)因?yàn)榻涌陬^文件里的相對(duì)#include是依賴目錄結(jié)構(gòu)的。5. 大型工程避坑與常見(jiàn)問(wèn)題排查五個(gè)真實(shí)踩坑記錄5.1 現(xiàn)象鏈接時(shí)大量undefined reference to “xxx”但庫(kù)明明已經(jīng)在 target_link_libraries 里原因基本是靜態(tài)庫(kù)鏈接順序不對(duì)。GNU 鏈接器從左到右掃描靜態(tài)庫(kù)如果module_a引用了module_b里的符號(hào)但命令行里module_a在module_b后面鏈接器掃描到module_a時(shí)沒(méi)把它所需的符號(hào)記下來(lái)到module_b時(shí)這些符號(hào)找不到歸屬于是報(bào)錯(cuò)。解決把被依賴的庫(kù)放在依賴者后面。CMake 里target_link_libraries的參數(shù)順序一般按“依賴關(guān)系從后往前”排。如果你用了PUBLIC傳遞有時(shí)這條規(guī)則會(huì)被隱藏的依賴鏈打亂排查時(shí)可以先用cmake --build . -- VERBOSE1看實(shí)際鏈接命令里的庫(kù)順序再調(diào)整 CMakeLists 里的書(shū)寫(xiě)順序。5.2 現(xiàn)象一個(gè)模塊里定義了DEBUG宏其他模塊也跟著變?cè)蚴鞘褂昧薬dd_definitions(-DDEBUG)這種目錄級(jí)全局命令它的作用范圍是整個(gè)目錄及其子目錄不是一個(gè)目標(biāo)。現(xiàn)代 CMake 里凡是“只想影響某個(gè)模塊”的宏定義都應(yīng)該用target_compile_definitions綁定到目標(biāo)上。解決先把對(duì)所有add_definitions清理掉逐個(gè)拆到對(duì)應(yīng)的target_compile_definitions區(qū)分PUBLIC/PRIVATE。拆完以后構(gòu)建時(shí)如果某個(gè)模塊仍然看到不該有的宏就用cmake --build . -- VERBOSE1檢查對(duì)應(yīng)編譯命令里的-D參數(shù)。5.3 現(xiàn)象安裝后下游find_package能找到庫(kù)但#include engine/module_a.h編譯報(bào)錯(cuò)“No such file or directory”原因大概率是安裝頭文件目錄結(jié)構(gòu)變了。比如源碼樹(shù)里是include/engine/module_a.h安裝時(shí)寫(xiě)成了install(DIRECTORY include/engine/ DESTINATION include)裝出來(lái)就變成include/module_a.h下游代碼按#include engine/module_a.h自然找不到。解決安裝目錄規(guī)則里要么install(DIRECTORY include/ DESTINATION include)保留完整結(jié)構(gòu)要么在安裝后檢查一下落地路徑。我一般會(huì)用一個(gè)臨時(shí)目錄做cmake --install . --prefix /tmp/test_install然后直接find /tmp/test_install -name *.h核對(duì)路徑是否和源碼樹(shù)一致。5.4 現(xiàn)象同一份源碼GCC 能編譯MSVC 報(bào)C2065未聲明標(biāo)識(shí)符但代碼邏輯沒(méi)明顯錯(cuò)原因往往是CMAKE_CXX_EXTENSIONS默認(rèn)是 ONGCC 用了gnu17標(biāo)準(zhǔn)允許了一些 GCC 擴(kuò)展語(yǔ)法比如typeof而 MSVC 嚴(yán)格走標(biāo)準(zhǔn) C。另一個(gè)常見(jiàn)原因是某個(gè)模塊用了#include unistd.h這類 POSIX 頭文件在 Windows 上根本不存在。解決頂層設(shè)set(CMAKE_CXX_EXTENSIONS OFF)讓所有模塊嚴(yán)格走CMAKE_CXX_STANDARD指定的標(biāo)準(zhǔn)??缙脚_(tái)條件編譯用WIN32和UNIX判斷或者用target_compile_definitions加平臺(tái)宏后再在代碼里#ifdef隔離。5.5 現(xiàn)象修改了一個(gè)頭文件重新構(gòu)建時(shí)只有一半模塊重新編譯另外一半一直用舊產(chǎn)物原因是file(GLOB_RECURSE ...)沒(méi)加CONFIGURE_DEPENDSCMake 在配置階段就把源文件列表固定了。新增或刪除源文件不會(huì)觸發(fā)重新配置導(dǎo)致構(gòu)建系統(tǒng)不知道文件變化。解決所有 GLOB 收集源文件的地方補(bǔ)CONFIGURE_DEPENDS。如果項(xiàng)目已經(jīng)用了較老 CMake就改成顯式列出源文件。另一種更省事的做法是在 CMakeLists 里加set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY CONFIGURE_DEPENDS ON)但這也不是萬(wàn)能藥最穩(wěn)妥的還是顯式源文件列表。6. 進(jìn)階用法把 CMake 構(gòu)建檢查變成日常習(xí)慣資源里有一塊很多教程很少講的內(nèi)容怎么讓 CMakeLists 本身可驗(yàn)證、可審查。我現(xiàn)在的習(xí)慣是給工程加一個(gè)CMakePresets.json把常用的構(gòu)建配置固定下來(lái){ version: 3, configurePresets: [ { name: dev, displayName: Development, generator: Ninja, binaryDir: ${sourceDir}/build/dev, cacheVariables: { CMAKE_BUILD_TYPE: Debug, ENGINE_BUILD_TESTS: ON, CMAKE_EXPORT_COMPILE_COMMANDS: ON } } ], buildPresets: [ { name: dev, configurePreset: dev } ] }這樣新同事拿到倉(cāng)庫(kù)不用記一堆-D參數(shù)直接cmake --preset dev cmake --build --preset dev就能進(jìn)入標(biāo)準(zhǔn)構(gòu)建流程。CMAKE_EXPORT_COMPILE_COMMANDS打開(kāi)后會(huì)生成compile_commands.json我用它來(lái)讓 clangd 或者編輯器索引整個(gè)工程定位跳轉(zhuǎn)比看 CMakeLists 里的變量快得多。對(duì)于大型工程我還會(huì)習(xí)慣性在每次提交前跑一遍cmake -S . -B build/check -DENGINE_BUILD_TESTSON -DCMAKE_BUILD_TYPEDebug cmake --build build/check -j$(nproc) ctest --test-dir build/check --output-on-failure這套流程是手動(dòng)的“連續(xù)集成”檢查。先干凈配置一次排除舊緩存干擾再編譯排除漏頭文件、漏鏈接最后跑測(cè)試排除運(yùn)行期問(wèn)題。資源里有完整的CTest接入示例在tests/CMakeLists.txt里用add_test注冊(cè)可執(zhí)行文件配合enable_testing()就能在 CI 或本地一鍵驗(yàn)證。從那以后我每次拿到一個(gè)不熟悉的 CMake 工程都強(qiáng)制自己先跑一遍“配置—編譯—測(cè)試”閉環(huán)再看 CMakeLists 分層結(jié)構(gòu)。很多所謂的構(gòu)建玄學(xué)最后都落在可見(jiàn)性和作用域上。希望這份資源里的工程實(shí)例和排查思路也能幫你把大型工程的 CMakeLists 從“能跑就行”變成“可維護(hù)、可審查、可交付”的狀態(tài)。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
亭亭在线资源| 国内精品久久人妻性色av| 67914亚洲精品| 亚乱色| 久久久久久久久久久久97 | 丰满精品人妻少妇久久字幕| 亚洲夜色在线| 抽插爽| 欧美日韩国产中文超碰| 丁香婷婷九月| 亚洲AV成人无码久久精品播放| 私人尤物在线精品不卡| 日韩人妻丝袜美腿中文| 97 视频在线| 超碰国产在线| 99爱爱| 日本熟女免费視颖| 欧美大波激情xxxx| av网站免费看| 亚洲激情视频| 舔足天天操天天射| 被窝影院午夜看片无码| 亚洲AV成人精品网站在AV| 蜜臀久久99精品久久久久电影| 丰满少妇高潮无码| 蜜桃视频精品一区二区三区| 97青娱乐超碰久久| 亚洲人妻熟妇三十三区| av72网| 无码人妻丰满熟妇奶水区毛片| 色区久久| 97自拍视频在线| 久操不卡视频| 五月婷在线| 色色色色电影网| 欧洲熟妇xxXx欧美老妇裸体| 午夜婷婷| 亚洲熟妇图片| 美女淫穴| 日韩熟女视频二区| 日韩欧美女求操每天更新| 天天综合,91入口| 肉丝中文无码高清| 婷婷人妻激情| 国产精品亚洲无码| 亚洲成人av电影在线| 另类TS人妖一区二区三区| 啊啊啊啊啊啊好多水| 欧美性色网| 午夜成人爽爽爽爽A片李冰冰| 久久久新亚洲AV| 少妇被c 黄 免费观看| 操b在线观看| 操www| 亚州操逼图| 亚洲中文字幕在线视频一区二区| 日本高清一本二本免费不卡| 欧美另类丝袜熟女| 日本欧美不卡| 婷婷丁香九月| 日韩午夜啪啪视频| 国产一区二区在线播放,久久亚洲精品中文字幕第一区,亚洲精品在线中文字幕视频 | 丰满搜索结果 -第18页- 久久高清无码| 91女在线观看| 97视频在线视频| 国产蜜臀精品一区二区尤物| 操逼免费视频无码国产| 超碰免费在线| 1204人成网站色www| 精品日日人妻| 小视频国产| 久操大香蕉手机视频在线看 | 欧美丝袜激情| 天天操天天日青青草超碰av| 91亚洲在线| av在线观看不卡网站| 天天肏夜夜肏| 啊啊啊快操我视频| 俞拍久久国应视频| 9久久精品| 亚洲情色在线| 99热在线播放| www黄片免费看com| 蜜桃传媒一区二区亚洲| 精品免费囯产一区二区三区| 亚洲成人无码影院| 午夜呻吟欧美| 欧美色欧美| 色噜噜精品一区二区三| 久久夜嗨| 98久久| 日韩亚洲精品一区二区| 亚洲熟妇乱女区二区三区| 丁香7月婷婷| 亚洲天天操| 国产精品成人无码av无码免费| 亚洲91av| 17c嫩草51久久91嫩草| 18禁免费视频| 新精精品久久精品| 无码一区二区精品视频久久久春药| 熟女色综合久久| 国产精品网站www| 97天堂| 国产一区二区啪啪视频| 日韩不卡网操逼中文字幕日韩| 九九热三级片| 啊啊啊在线观看免费视频| 女生久久网| 白嫩国模丰满一二三区| 综合色好色| 亚洲阿v天堂无码z2018| 成人精品视频| 欧美成人一级免费电影| 亚州熟妇精品| 国产成人手机视频激情| 亚洲的天堂网| 日本在线不卡v二区| 欧美亚洲se91| 青青草日韩无码| 日1区2区3区2020| 国产又粗又长又爽又色| 99re综合伊人| 天天精品| 99999re| 日本狠狠干| 人妻娇喘 激情视频| 久久九九网| 精人妻一区二区三区| 开心五月激情网| 色原狠狠天天天| 超碰AV在线| 综合欧美亚洲| 97色论| 岛国色情视频在线观看| 91超碰丝袜制服| 亚洲av乱伦色图网站| 亚洲一区中文字幕| 97天天弄| 免费a在线播放v| 日韩在线观看AV| 超碰狠狠操| 中文字幕三四五区| 久久精品夜色国产亚洲AV| 天天操天天射天天日| 不卡一区视频| 色婷婷综合视频| 不卡在线观看视频| 青青欧洲黑| A片 AV一级在线播放观看免费 | 午夜福利精品| 好涩综合| 东京热91| 久久熟妇五十路一区| 色色福利| 热99这里有精品综合久久 | 天天天堂影视日韩亚洲91| 香蕉婷婷| 成人a大片在线观看| 97操综合| 丝袜综合| 精品一区二区三区四区女 | 色妇91| 五月婷婷基地| 国产专区第一页| 欧美综合亚洲| 日本精品国产视频| 亚洲人码13| 中文字幕成人| 午夜视频久久久久一区| 四虎884| 亚洲AV高潮| 六月婷婷综合| 草草影院日本第一页| 中文字幕一区二区三区四五区| 精品久久久久瑟瑟| 亚洲精品视频二区| 97干在线视频| 日本在线一二| 思思性爱| 在线视频免费播放一区| 先锋影音av先锋一区| 欧美另类丝袜熟女| 国产AV线| 97se综合| 91少妇通奸网站| 成人无码专区精品视频| 中文高清一区二区的| 日韩国产在线观看av| 视频一区二区免费在线| 91人人| 好一吊区二区| 中文字幕二区| 黑人精品欧美一区二区蜜桃| 是还免费视频1727我| 欧美少妇第一页| 午夜精品一区二区三区三上悠亚| 五月婷婷综合网| 亚洲无码一区二区三区三州| 国产无套粉嫩白浆在| 国模不卡| 人人干人人搞人人摸| 青青免费在线视频一区| 国产成人精品无码久久| 成人一级性爱| 极品尤物女神在线观看| 日亚韩精品视频二区三| 天天做日日爱夜夜爽| 久操网线| 一级性爱aaaa| 看日韩美女二区三区免费操逼视频| 亚洲黄色a级片| 日本Xx性爱| 亚洲人妻在线一区| 在线观看亚洲专区| 婷婷中文网| 牛牛aV| 日韩欧美俄罗斯A片| 懂色AV蜜臀无码精品APP| 激情看片网站| 欧洲天天在线| 天天看特黄的免费网站| 精品国产久久乱码| 黑丝制服中文字幕| 玖草在线视频| 国产乱伦性爱区| 人人摸.人人色| 级做a爱无码性色永久免费| 成在线人在线观看视频| 99热啪啪| 中文字幕制服欧美久久一区| 97超碰欧美| 蜜桃狠狠色伊人亚洲综合网站| 亚洲欧美另类图片| 亚洲无线码欧洲精品区别| 日本不卡高清视频| 五月天社区| 97精品一二区| 黑丝制服中文字幕| 操婢日韩| 日韩熟妇二区| 97在线青| 综合影院永久入口国产| 九九AV| 人妻精品4K4K4K4K4| 久久99草| 国产精品久久久久久久久久梁医生| 8050午夜少妇无码| 一二三啪啪专区| 少妇内射视频| 天堂69亚洲精品中文字| 一区二区三区精品视频| 草久久久| 男人的天堂va在线| 俺去俺来也在线www| 啊灬啊灬啊灬好深灬快高潮了动漫-国产字幕国产在线观看-B049AV | 国产精品视频在线观看| 91丨豆花丨熟女| 99热超碰在线| 九九九九免费高| 日日爽熟女| 尤物网站91| 亚洲国产欧美中日韩成人综合视频| 91无人区卡一卡二卡三乱码入口最新版:能让用户有更多选择的选择-经典说说-爱 | 五十路一区无码| 福利在线观看一区二区| 97超碰天天爱天天爱| 青青青草原| 免费看黄片现成| 九九伊人网| 夜夜免费视频| 91精品亚洲内射孕妇| 4399成人黄A片| 天天干天天日天天射黄色片| 国产9区| 91天堂色男人的天堂| 久久久久久91香蕉国产| 超碰97精品| 综合网色| 亚洲中文丝袜美腿诱惑字幕| 在线另类| 日韩猛交| 亚洲 欧美 中文 日韩超碰| 樱花蜜乳av| 综合网,亚洲,欧美| 91成人无码| 欧美啪啪女女| 91色婷婷综合久久中文字幕二区| 欧美日韩中文亚洲v在线综合| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 日韩一级片在线看| 97国产|免费| 天天天天天干夜夜夜夜夜操| 五月天九九日国产精品一区二区三区| 操逼片中文| 黑人粗大V S日韩女优视频| 在线看的av| 青青草色情网站视频| A级毛片在线看免费| 国产农村妇女精品1区二区| 天天上日日上日韩精品| 欧美狠狠操| 亚洲AV成人无码一二三久久| 啊啊啊久久久视频| 在线国产一区二区av| wuyechaopeng| www.狠狠操| 男女国产精品| 97网址www| 91亚洲色人| 97草草| 日本网色| 亚洲天天综合| 免费网色网站| 久热大香蕉| 精品九九九九九| 中文字日本乱码| 伊人激情五月天一区二区| 欧美九一精品久久久熟妇| 久久五月综合| 极品销魂美女一区二区| 天天综合站| 亚洲无码色| 国产精品视频自拍在线| 精品无码一区二区人妻久久蜜桃 | 呦女网站| 天美国产精品| 唐山老熟妇露脸啪啪叫| 亚洲熟女人妻中文字幕一区二区| 后入式在线免费观看60秒| 亚洲综合中文字幕有码| 91精品无码久久久久久久| 嫩草影院永久在线制服丝袜| AV九九| 亚洲日韩精品久久久久一区壹牛| 97jingpin| 中文字暮97| 大香蕉强奸乱伦| 国产国产亚洲一二三久久| 熟妇最新先锋一二三区| **一级毛片国产| 欧美成人性爱视频在线播放 | 3028国产精品| 另类亚洲一区二区三区| 超碰 欧美| 日本不卡码黄色| 熟女天天干| 欧美日韩操逼动图| 欧美性爽xyxOOOO| 蜜臀av网址| 亚洲三级网址久久最新| 欧美躁死她一区二区| 影音先锋视频在线| 精品无码欧美三级| 亚洲高清91| 欧美大战久久久伊人| 91亚州日韩高清| 国产精品自在线发布| 国产午夜精品在线观看| 九九九九精品视频| 日本精品一区二区三| 一区二区 电影 亚洲| 大香樵伊人网| 欧美婷婷| 99热这里| 91超级碰碰| 一,爱啪啪,在线免费视频| 国产三级在线现体验区| av网站免费看| 中国人高清www色视频免费| 激情婷婷丁香网| 九九人妻| 亚洲国产青青| 美女网站黄页| 色天天野狼综合社区| 色综合超碰超| 好爽要喷了| 91欧美性| 久久九九久精品国产尤物|国产精品爽黄69天堂A片潘金莲,国产亚洲精品第一综合 | 国产精品欧美激在线| 午夜免费视频1000| 色五月婷婷麻豆在| 欧美后进式| 美日韩成人| 精品久热| 欧美熟妇视频| 男人下部插入女人下部| 色偷偷色偷偷欧美日韩| 做爱福利视频一区二区| 97se综合| 怡红院成人视频| 欧美综合第一页| 久久久久久久9| 欧美一级A一级a爱片久久| 色五月AV| 色欲三区| 久久精品国产亚洲AV无码电影| 中文字幕一区电影在线观看| 婷婷九月| 欧美色图片91| 老女人老91妇女老热女| 99最新日韩偷拍视频| 老鸭窝在线视频播放| 秘书高跟黑色丝袜国产91在线| 久超碰这里只有精品| 在线视频资源| aⅴ日韩成人电影av在线免费看av大全| 97欧美性爱| 激情综合五月| 久草精品国产蜜臀| 激情婷婷丁香网| 久久久青青草| 久久中文字幕一区不卡| 丁香九月激情啪| 资源在线观一 二| 嗯嗯啊啊操死我| 91nbbbbbb| 国产激情在线| 国产精品爱欲| 久热无码| 欧美se亚洲| 亚洲色图一区二区三区| 高清肉丝中文无码| 亚洲成人AB| 亚洲图片另类| 日韩乱伦影音先锋| 男人的天堂2010| 青草香蕉网| 999热日韩精品| 中文操逼字幕| 国产大学生高潮在线播放| 中文字幕丝袜美腿| AV中文字幕三四五| gogogo免费高清看中国国语| 任你爽视频| 亚洲精品国产精品乱码不卡| 欧美激情专区| 精品毛片久久久精品毛片| 97超碰69| 中文不卡视频| 午夜寂寞欧美| 国产精品suv一区| 蜜臀久久久99久久久久 | 嗯嗯啊啊操死我| 天堂亚洲欧美| 91精品啪在线观看国产城中村| 亚州操操穴网| 97色综合中文网| 欧美日韩 强奸乱伦| 亚洲综合性感在线| 久久精品一区二区| 成人网址在线观看| 亚洲熟女少妇免费视频| 乱伦3P视频| 亚洲自拍另类丝袜综合| 久久在线观看免费视频| 天天色综合图片| 九九热只有精品| 久久久免费的精品| 九七人妻在线| 啪啪资源网| 熟妇高潮一区二| 国产婷婷综合在线观看| 不卡在线一区,精品一区二区三区中| 后入式999| 亚洲天堂无码| 午夜福利 成人 91| 丁香六月激情| 69精品| 日韩三级一区| 国产400孕妇孕交群| 五月天婷婷欧美三区| 99精品九九九九九九| 制服乱伦| 欧美色图亚洲色| 人妻少妇精品一区二区三区| 91少妇人妻| 婷婷亚洲中文字幕在线| 精品无码久久久久久久久果冻糖心| 日韩久久三区| av网站在线看| 天美传媒在线一区| 蜜桃av综合网发布| 三四中文字幕| 日韩精品三区四区| 国产操逼视频在线观看| 人妻熟女一区二区| 色99视频| 亚洲中文字幕在线视频一区二区| 97超碰逼| 99性爱在线观看| 懂色av中文字幕| 伊人久久88国产女| CCYY草草影院地址入口| 久久精品中文| 污啪啪啪视频| 日本1区2区不卡视频| 欧美性综合| 狠狠综合| 成人免费毛片| 天天欲望网| 香蕉99秘 精品一区丁香| 天天夜躁日日躁狠狠2002| 久色99999| 色色色色网站| 亚洲另类欧美精品| 中出91视频| 天天干2区3区| 亚洲码专区| 久久只有精品| 九热超碰| 嫩草 人人网精品| 中文字幕性感少妇av| 久久久久久九九九九| 日本999精品| 婷婷激情四射| 激情网色| 国产精品久久aV| 嗯~啊~轻一点 视频| 日韩人妻无码精品系列| 天天干天天干天天干| 91精品久久久| 成人国产视频在线观看| 欧美视频一区二区三区| 激情四射五月天| 美女黄色一级A视频| 五月丁香拍拍激情综合三级| 亚洲自拍偷拍视频在线| 麻豆一区二区AV天美| 加勒比日本在线| 男人天堂婷婷五月天校园春色| 久久精品高清AV| 天天射天天操天天干天天吃2018| 99热这里都是精品| 91精品操美女| 亚洲天堂日本| 久久久久亚洲一区女同性恋中文字幕| 97超碰jingpin| 亚洲图片偷拍视频区| 国产精品国产自产高清AV| 欧美97爱| 99re98| 中日992视频| 97超碰资源网| 一直超碰| 亚洲中文电影| 欧美亚洲美少妇一区二区| 久操综合在线| 国产91美女高潮| 色优久久| 中文字幕啊啊啊在线观看视频| 99日韩| 天天草天天干天天日| 欧美日韩国产高清在线一二三区 | 操逼日韩无码| www…国产操逼| 亚洲制服欧美另类内射| 国产精品熟女丝袜一区二区| 1024人妻熟女一区二区三区| 国产A v无码专区| 粉嫩av久久一区二区三区| 美女熟妇色| 亚洲伊人久久综合97| 黄片www视频免费| 曰韩人妻中文字幕在线 | 综合色图,成人综合网| 91无码中出人妻视频| 亚洲无码色| oumeisetu综合| 美女在线H91| 亚熟在线| 日本新免费二区三区| 欧美丝袜美女电影一二三四区| 亚洲性少妇| 男人天堂无码| 狠狠超| 涩综合导航| 操操逼操操逼操操逼逼| 无套内射性感少妇视频| 日韩欧美视频青青| 成人网欧美风情| 色超碰综合| 亚洲91射| 看日韩黄片| 久久青青草原免费视频| 免费人成?大片在线播放| 思思99热| 九九九九九九成人| 久久久涩| 亚洲精品乱码线路中文字幕| 久久精品色欧美aⅴ一区二区| 99视频内射三四| 色女99一级片在线观看| 欧美超碰人妻97| 欧美美女视频| 国产精品人妻熟女aⅴ| 亚洲中文字幕精品久久久久久直播| 狠狠干狠狠干| 久久99精品九九久久久婷婷| 色约约一区=区三区| A一区片| 99精品久久久久久久婷婷蜜桃| 91亚洲黑人| 日韩综合97P| 亚洲天堂欧美| 簧片免费看视频| 亚洲精品天天影视综合网| 日本不卡中文| 免费人成在线观看网站品爱网| 免费视频a级毛片免费视频| 色诱中文字幕| 啊啊啊啊好疼| 1禁看欧美黄片免费看| 久久久久国产亚洲一区欧美色图日韩| 久久久久921| 成人国产视频在线观看| 欧洲熟妇xxXx欧美老妇裸体 | 国产一区二区三区高清视频| 亚洲欧美经典一区二区| 美女诱惑在线一区| 国内偷拍精品一区二区| 99热综合| 天天影视综合色| 国产野战露脸在线播放| 性色高清在线| 熟女探花啪啪| www99热| 一二三卡欧美日韩人妻免费精品| 久久天天艹| 亚洲国产一区二区三区在线 | 天天干天天操天天拍| 亚洲女优有码无码高清| 欧美日韩国产高清在线一二三区| 啊啊啊97视频| 边做饭边操逼逼| 久操99| 91老女人| 91 手机在线播放 绯色| 色淫网站优优视频| 久久婷婷伊人| 啊啊啊水好多| 久久香蕉网| 超碰97男女| 色色色综合网| 精品对白久久不卡| 涩涩久久精品| 免费观看网黄| 久操 高清| 黄片qw| 欧洲与亚洲欧美精品中文字幕| 国产精品黑人一区二区三区| 日本女厕偷拍| 国产精品 久久久精品一牛| 天天日天天舔东京热| 手机在线免费看的av| 青青操少妇| 做爱A级亚欧| 欲色啪| 婷婷丁香五月激情啪啪| 91中文字幕制服丝袜免费视频| 99啪啪| 久久亚洲AV无码白度| 精品人妻一区二区三区-国产精品 一个人在线看的黄色电影网站 | 日韩大香蕉精品在线视频| 特级丰满少妇一级AAAA爱毛片| 欧美综合 站| 日韩精品在线观看网站| 一二三区精品视频| 91国产精品熟女| 国产JDAV无码视频在线观看| 一直超碰| 色色婷| 欧美精品成人一区二区在线观看 | 免费啪啪av| 国产人妻精品一区二区三区秋霞| 日本欧美国内在线| 欧美激情久操网| 欧美亚洲se91| 六月丁香五月婷婷| 人妻偷拍一区二区三区| 九九热午夜欧亚国产视频| 开心激情婷婷| 韩国一级婬片A片无码天美| 天天在线91| 久久久久久久久久久久久久久性生活视频 | 91香蕉国产尤物视频| 熟女AV一区| 激情综合色| www.久久制服糖| 9久9久| 第45页一区二区| 国产日本久久免费精品| 97爱| 亚洲熟妇AV日韩熟妇在线| 亚 欧 美 综合| caoni国产亚洲av| 大香蕉欧美| 淫穴高潮色图| 超碰99热中文字幕| 五月天激情国产综合婷婷婷| 91午夜无码| 无码78| 天堂精品| 性生活久久久久久久久久| 狼人久草| 曰本人妻人人澡人人夹| 女人天堂av在线播放| 欧美激情一| 二级久久网| 91九九九馒头| 五月天色五月| 青青草丝袜在线视频| 九九视频黄色片| 日本久久超碰| 日韩无码人妻中字久久三区四区| B049AV在线播放| 麻豆久久久久久久久丝袜| 九九碰九九爱97| 伊人女女资源在线观看| 无码国产Av| 国产精品午夜AV完会免费| 色老大| 国产AV线| 青青草中日韩在线| 精品一二三区女同 | 色视频蜜乳| 国产毛片片精品天天看视频| 色97干| 91热| 啊啊啊好大好深| 亚洲另类色综合网站| 中文字幕伊人| 青青草日韩免费观看高清在线| 狠狠躁天天躁日日躁| 人妻一区久久二区三区色播| 日韩天堂av电影在线观看| 国产欧美伊人| 亚洲色图超碰在线| 狠狠狠一区二区三区| 伊人成人中文字幕久久网| 91超级碰碰碰| 啊啊啊啊嗯嗯嗯用力好爽 | 日本欧美国内在线| 亚洲欧洲网站免费观看| 亚洲各类熟们中文字幕| 亚洲一区日韩| 97五月天| 1024亚洲中文字幕久在线看片你懂的| 亚洲综合春色| 亚洲精品国产AV天美传媒| 欧美大香蕉97| 成人十八禁日韩欧美一二三| 超碰97欧美日韩| 一二三四区操操Av| 色九久| av激情亚洲五月天| 久久亚州精品成人Av无| 午夜视频好爽啊| 国语av最新自产拍在线观看| 高清国产av无码| 精品超碰中文在线| 欧美性爱一内片一区二区三区| 9久9久| 夜夜躁狠狠躁日日躁av| 亚洲精品国产精品成人| 久久精品久久九九精品| 另类小色呦| 亚洲宅男天堂| 九九九九九九成人| 亚洲日韩97| 天美传媒婬乱在| 国产色综合亚洲色综合吹潮| 欧美性爱三区二区| 夜夜操二区| 96免费视频在线| 亚洲成人帖图| 亚洲国产成人7777| 久久精品国产免费观看99| 91oumei| 999 久久久| 激情欧美97| 亚洲色图尤物视频| 久久婷婷视频| 日日黄色三级网站| 久久精品国产亚洲av水密被窝| 国产91亚洲精品一区二区三区| 黄页视频网站野外| 嗯嗯嗯嗯啊啊啊好紧好大| 97视频www| 久久东京热久久| 国产精品视频一区二区三区八戒| 日韩AV片| 人乳av| 强奸乱伦AV一天堂网| 欧美 亚洲 偷拍自拍| 亚洲色图欧美色图制服丝袜| 日韩AV噜噜噜一区二区三区四区| 亚洲一区日韩精品| 99激情视频| 中文字幕诱惑制服人妻丝袜美丝袜美 | 99蜜桃臀亚洲成人在线观看| 96超碰网| 狠狠操夜夜| 精品一区二区三区最新| 啊啊啊水好多| 高跟丝袜AV专区国产| 欧美 亚洲 大香| 精品无吗m| 麻豆国产96在线| 性性欧美| 亚洲无码国产探花在线观看| 婷婷综合视频| 懂色av中文字幕| 国产高清免费不卡av| 亚洲天堂性爱| 变态综合色| 亚欧国产无码精品在线| 欧美色日本| 亚洲精品一二牛牛| 九九热免费国产视频婷婷伊人| 一区二区无码视频| 人人做人人妻人人夜视频| 亚洲Av噜噜一区二区三区妖精| 蜜臀一区二区三区在线| 久久婷婷国产一区二区色| 男人的天堂kva| 色噜噜人妻丝袜a∨先锋影| 青草影院内射高潮| 夜夜影视四色| 日韩精品国模| 亚洲免费成人精品电影| 性爱AV天堂| 波多野结衣一级视频| 久久超碰免费的| 大香蕉乱级| 操学生天天| 无码高清操逼网址| 欧美在线l亚洲| 日本熟女中文字幕一区| 少妇专区一二三四五| 18禁中文字幕| 亚洲综合大片| 91人人臊| 91性感在线| 美女诱惑爱爱| 色呦呦国产精品免费看| 4141514逼喷水三级片| 囯产精品久久久久久久久久梁医生 | 久久精9| 26uuu性物| 欧美日韩97在线| 九九色热| 欧美成人免费在线观看| 久草色悠悠在线视频| 一级毛片久久久久久久女人18| 亚洲黄a三级三级三级看三级| 免费A V在线播放| 久久精品国产99久久,亚洲日韩久久日本一区一区三区 | 在线精品福利免费播放| 97在线/亚洲| 久久99黄色卞西瓜| 九九九九九九九精品视频| 伊人欧美大香蕉视频| 丝袜 亚洲 偷拍| 伊人操你| 夜夜嗨一区二区三区三州加勒比| 26uuu欧美| 在线毛片片免费观看| 熟妇高潮精品一区二区三区下载| 欧美综合区| 极品销魂美女一区二区| 999 久久久| 99热66| 日韩av电影成人在线| 嗯嗯啊啊的视频| 丁香六月综合激情| 777琪琪午夜免费A片| 97超碰伊人| 中文一区二区婷婷视频| 亚洲成a人在线观看久| 男人天堂欧美| 亚洲男人的天堂网| 午夜精品久久久久久久男人的天堂 | 精品在线观看视频在线| 97精品网| 插B在线观看| 粉嫩国产精品久久久| 人妻日日干| 中文久久| 夫妻AV网站| 青青草精品| 97人人干| 日本丝袜人妻内射| 97爱爱| 9.1小视频| 国产高清不卡视频| 丁香五月av| 亚洲一欧洲中文字幕在线| 欧美色欧美| 蜜区区视频79 | 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 日韩乱码Av| 国产色呦呦| 中文字幕人成乱码熟女香港| 色综合91好| 羞答答AV中文字| 婷婷精品国产一区二区三区日韩| 久久久久久午夜男人的天堂| 欧美日韩性爱操大逼| 韩三级a视频在线观看| 久久少妇| 人妻熟女一区二区在线视频| 超碰伊人在线| 大香蕉啪啪啪啪在线| 美女人妻色网站| 99激情| 色狠狠综合| 97任你吞精| 亚洲αv一区二区三区| 无码一区二区精品视频久久久春药| 久久大| 96久久久| 国产女人视频三四五区| 亚洲中文字幕一区二区| 校园春色美腿丝袜 | 校园激情狠狠四射| 国产精品禁久久久精品| 国内一区二区三区| 久9爱经典视频| 丝袜色综合| 精品一区二区三区蜜桃臀www| 五十路熟女工口 | 久久亚洲AV成人精品无码| 亚洲va有码在线天堂| 日韩性爱1级片视频| 操操吧亚洲乱伦视频| 免费av高清无码| 天天干天天舔| 美女操逼A A| 高潮毛片无遮挡高清免费| 1级午夜影院费免区| 无码区蜜乳| 国产女同视频在线播放| 自拍视频一区在线观看| 亚洲欧洲精品视频发布| 中国女人内射6XXXXX| 精品在线观看视频在线| 欧美一级做a爰片免费视频| 久久精品国产亚洲AV成人直播| 国产精品自产拍在线观看社区| 岛国成人av在线播放网址| 亚洲av无码成人精品国产| 天天爽人人综合免费7799| 97久久视频| 久久熟女人| 啊啊啊啊啊啊好湿好爽视频| 亚洲视频小说| 国产三级中文字幕粉嫩| 国产美女自拍视频| 日本淫乱女一区二区三区视频| 操操操五月天婷婷丁香影院| 性在久久久久久| 久久 国产精品 一区| 亚洲有码 视频一区| 曰本精品久久久| 黑人精品久久97| 天堂网亚洲区手机版| 韩国三级色呦呦| 久久性爱精品一区| 久操热线| 爱干爱射网啊啊啊| 997色在线| 东北毛片| 最新日产中文在线麻豆| 少妇超碰在线| 在线观看视频91| 亚洲欧美综合图片| 一二三区操逼国产91| 51一区二区三区| 日韩免费人妻色情网站| 好看的久久不射无码影视影院| 亚洲玖玖爱| 日韩操p| 日本福利二区视频| 综合久欧洲| 麻豆天天躁天天揉揉AV| 可以免费看黄片的视频| 影音先锋国产精品| 黑丝日韩av丝袜av| 久久久青青草| 国产日韩精品人妻久久久久色欲网站| 99久久网站| 欧美色图成人网一区二区 | 91岛国动作片| 岛国AB视频| 精品福利视频| 欧美综合色图片| 亚洲91在线播放影院| 韩国一区二区精品亚洲| 亚洲精品黑丝| 久久久99免费| 中文字幕黑人大片| 老鸭窝日丰县女人| 99无码视频| 青青操在线亚洲视频观看欧美在线 | 久久久爆乳翘臀一线天伦理视频| 亚洲黄色网址| 天天干天天舔| 95精品在线| 乱人乱色一区二区三区免费| 日韩乱伦AⅤ| 天天日日日射| 久久成人东京热人妻| 国产偷拍网站| 欧美一二级| 伊人天天久久动态图| 久久久96精品| 无码区蜜乳| 俺去久久| 日韩大香蕉AV影片| 国产高清精品福利| 丁香婷婷激情五月天无毒不卡 | 日本色日夜干| 欧美三级中文字幕hd| 日本男人插女人的逼黄色| 国产日韩精品suv| 青青草密桃在线播放| 97网色| 国产AV久久久蜜爱影集| 丝袜色综合| 殴美在线AⅤ| 嗯嗯啊啊啊啊轻点视频| 人人操人人操人人操人人操人人操人人人11.CM| 又大又黄国产| 亚洲丝袜综合| 中文字幕二区日韩天堂| 狠狠爱大香蕉| 日本高清电影欧美色图| 欧美日韩精品久久久久久久久东北老熟妇| JULIA一区二区三区在线播放| 9997se| 国产精品自产拍在线观看社区| 日本一级不卡一二区| 国产精品久久成人免费| 99最新日韩偷拍视频| 亚洲AV无码久久久国产精品| 超碰久草| 亚洲黄色影视| 欧美人妻少妇| 欧美日韩人人精品| 尹人免费观看视频在线| 大香蕉国产中文自拍| 一区不卡在线观看av| 亚洲天天影视综合网| 亚洲天堂人妻熟妇视频| 超碰综合97在线| 9色在线| 国产女人视频三四五区| 欧美性色综合网| 嫩呦国产一区二区三区AV| 激情人妻另类| 日韩免费性爱视频在线观看| 精品天堂| 欧美亚洲丝袜美女电影| 国产成人无码啪| 东京热大香焦| 麻豆人妻精品一区二区| 囯产精品久久久久久久久久梁医生| 久久久久久久久九九久孕交| 啪啪资源网| 99精品九九九九九九| 91亚洲不卡一区| 亚洲精品无码成人久久久99| 欧美色爱综合| 嗯嗯嗯嗯啊啊啊好紧好大| 国产欧美精选自拍一区| 九久久精| 久久欧洲| 麻豆这里只有精品| 99久久亚洲精品无码毛片潘甜甜 | 91精品女厕偷拍视频| 亚洲美腿丝袜香蕉影视欧美成人| 中文字幕黑人大片| ji熟女.com| 啊啊啊啊无码| 婷婷另类小说| 久久久com| 日本操逼视频不卡直接放| 蜜区区视频79| 国产超碰在线一区| 岛国片在线观看视频亚洲| 人人摸人人入| 偷拍亚洲情色| 欧美曰韩国产精品| 六月激情婷婷| 99国产在线 精品 视频| 欧美成人精品欧美一级乱黄一区二…| 日韩精品熟妇| 婷婷尹人大香蕉免费| 久久直播国产| 97超碰人人模人人拍人人| 欧美啪啪天堂| 另类av综合久久| 天天综合~91入口| 欧美精品久久久久久久久88| 久久国产在线一区二区| 岛国天天午夜影院传媒网| 97干天天| 久妇网| 五月丁香在线| 国产激情av女片自拍| av一区二区三区四区| 亚洲综合首页| 国产乱码久久久| 欧美有码亚洲中文字幕一区二区三区四区| 中文字幕在线免费观看 | 超碰95| 91亚洲欧美色图| 天天拍天天操| 99久久精品国产高潮| 亚洲国产91精品一区二区久久| 欧美日韩性爱电影在线| 国产精品激情久久久久久久| 丁香婷婷五月| 亚洲97精品| 欧美操逼录像国产黄色国产| 91久久久久久久| 欧美日本天堂| 欧美黄色图片| 91丝袜在线观看视频在线观看| 丁香六月激情综合| 人妻激情偷乱视三区频一区二区| 日韩国产在线观看av| 少妇一区二区三区高速| 成人午夜高潮av猛片| 青草综合| 亚洲欧美不卡线| 中日韓欧美高清| 婷婷爽人人婷婷爽视频| 91狠狠综合久久| 传媒在线观看一区二区三区| 超碰天天去日穴| 一卡二卡在线播放| 日本ZZ高免费A级视频| 97在线观看免费| 人妻精品视频一区二区三区 | 九九毛片这里只有精品| 国产亚洲精品自在线亚洲情侣| 天堂中文资源在线bt| 男女激情黄色网址| 日本激情免费大片| 秋霞影音一区二区三区| 在线观看精品国产免费| 精品一区二区人妖| 高清国产av无码| 人妻久久久| 毛片视频白嫩| 人妻在线大香蕉| 欧美在线中M| 伊人网在线点播|