精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

拋棄 Autotools 向 CMake 邁進吧

開發 開發工具 Linux
CMake 是一個跨平臺的編譯、測試和打包軟件,即使你以前從來沒有使用過構建系統,也可以輕松上手。

[[401319]]

CMake 是一個跨平臺的編譯、測試和打包軟件,即使你以前從來沒有使用過構建系統,也可以輕松上手。

在我以前的文章 Autotools 入門 一文中,我說明了如何使用 Autotools 來管理和打包代碼。這是一個強大且通用的平臺,可輕松集成到許多打包系統中,包括 RPM、APT、pkgsrc 等等。它的語法和結構可能會令人困惑,但幸運的是,我們還有其他選擇,開源的 CMake 就是其中一個。

CMake 是一個用于構建、測試和打包軟件的跨平臺套件。它使用簡單而清晰的語法,因此即使你以前從未使用過構建系統,也很容易開始使用。

安裝 CMake

CMake 可能已經安裝在你的 Linux 系統上。如果沒有,你可以使用發行版的程序包管理器進行安裝:

  1. $ sudo dnf install cmake

在 Debian 或者其他相似的系統上:

  1. $ sudo apt install cmake

在 Mac 上,你可以使用 MacPorts 或者 Homebrew 來安裝:

  1. $ sudo port install cmake

在 Windows 上,你可以使用 Chocolatey 或者直接從 CMake 網站 下載二進制來安裝。

使用 CMake

對于想要從源代碼構建軟件的開發人員或用戶來說,CMake 是一種快速簡便的編譯和安裝方法。 CMake 分階段工作:

  1. 首先,在 cmake 步驟中,CMake 掃描計算機查看一些默認設置。默認設置包括庫的位置以及在系統上安裝軟件的位置。
  2. 接下來,使用系統上的 make 命令(在 Linux 上是 GUN Make,在 NetBSD 上是 NetBSD Make)來編譯程序。這個過程通常是將人類可讀的源代碼轉換成機器語言。
  3. 最后,在 make install 一步中,那些編譯過的文件將被拷貝到(在 cmake 步驟中掃描出來的)計算機上合適的位置。

這看起來很簡單,當你使用 CMake 時就是這樣。

CMake 的可移植性

CMake 在設計時就考慮了可移植性。雖然它不能使你的項目在所有 POSIX 平臺上都能正常工作(這取決于作為開發者的你),但它可以確保將標記為要安裝的文件安裝到已知平臺上最合適的位置。而且由于有了 CMake 之類的工具,對于高級用戶而言,根據其系統需求自定義和覆蓋任何不合適的選項都很容易。

使用 CMake,你只需要知道將哪些文件安裝到哪個常規位置即可。它會照顧其他一切。不再需要自定義安裝腳本,它們有可能在任何未經測試的操作系統上失敗。

打包

像 Autotools 一樣,CMake 也得到了很好的打包支持。無論它們是打包成 RPM 還是 DEB 或 TGZ(或其他任何東西),將帶有 CMake 的項目交給打包者,他們的工作既簡單又直接。打包工具支持 CMake,因此可能不需要進行任何修補或者調整。在許多情況下,可以自動將 CMake 項目整合到工作流中。

如何使用 CMake

要在項目中使用 CMake,只需在項目目錄中創建 CMakeLists.txt 文件。首先,聲明最低要求的 CMake 版本以及項目名稱和版本。CMake 會努力在盡可能長時間內保持兼容性,但是隨著你使用的時間越長,并且關注它最新的開發動態,你就會知道哪些特性是你所依賴的。

  1. cmake_minimum_required(VERSION 3.10)
  2.  
  3. project(Hello VERSION 1.0)

如你可能已經看到的那樣,CMake 的語法是一個帶有括號和參數的命令。大寫的 VERSION 字符串不是任意的,也不只是格式。它們是 project 命令中的有效參數。

在繼續之前,先寫一個簡單的 C 或者 C++ 的 hello world 程序。為了簡單,我就寫了六行 C 代碼,并把它保存在 hello.c 中(為了匹配我在 CMakeLists.txt 中可執行文件的名字)。

  1. #include <stdio.h>
  2.  
  3. int main() {
  4.    printf("Hello open source\n");
  5.    return 0;
  6. }

不過,不要搞錯了,CMake 不僅適用于 C 和 C++。它可以處理任意文件,并且有許多可用的命令,因此它可以幫助你維護許多不同形式的項目。

CMake 網站中記錄了所有有效的內置命令及其可用參數,因此無論你要做什么,都可以輕松發現所需的功能。不過,這是一個簡單的示例,因此,你需要的下一個命令是必不可少的 —— 你必須為 CMake 定義要構建的代碼:

  1. add_executable(Hello hello.c)

這個命令指定了你編譯后的二進制文件的名字為 Hello。因此,它與你在終端中執行帶有 -o Hello 的 gcc 命令是一樣的。

在一些比較復雜的項目中,你可能還需要使用庫文件,你可以使用 add library 命令來鏈接庫文件。

在你設置了你想要構建和標記為安裝的文件之后,你必須要告訴 CMake 一旦用戶安裝了程序,最終的應用程序應該在哪個位置。

在這個簡單的例子里,你僅需要做的一件事就是在你的 CMakeLists.txt 文件里添加 install 命令。install 命令接受幾個參數。但是在這個例子中,你僅需要使用 TARGET 命令來指定你要安裝文件的名字。

  1. install(TARGETS Hello)

向 CMake 工程添加一些文件

一個軟件項目向用戶交付的往往不僅僅只有代碼,還有一些其他的文件數據,例如手冊或者是信息頁、示例項目,或者是配置文件。你可以使用與包含編譯文件時類似的工作流程,將任意數據包含在 CMake 項目中:在 CMakelists.txt 文件中使用 file 命令,然后說明一下這些文件要安裝在哪里。

例如,你可以在這個項目中包含一個 assets 目錄,你可以使用 file 命令,后面跟上 COPY 和 DESTINATION 參數來告訴 CMake 將這些額外的文件復制到你的分發包中。

  1. file(COPY assets DESTINATION "${CMAKE_CURRENT_BINARY_DIR}")

這個 ${CMAKE_CURRENT_BINARY_DIR} 變量是一個特殊的 CMake 內置變量,表示 CMake 正在處理的目錄。換句話說,你的任何文件都會被復制到編譯目錄(在你運行 cmake 命令后,這個過程會更加清晰,到時候回過頭來看一下)。

因為這些額外的數據文件有些雜亂不堪(如果你不信的話,可以看一下 /usr/share 這個目錄)。對于你自己的項目創建一個子文件夾對誰都有好處。最好也帶上版本名字。你可以通過在 CMAKE_CURRENT_BINARY_DIR 中指定一個新的目錄,使用你選擇的項目名稱,后面跟一個為你的項目命名的特殊變量和你在項目聲明中為它設置的 VERSION

  1. file(COPY assets DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/Hello-${Hello_VERSION}")

定義安裝位置

你已經定義你要編譯的文件,因此現在你要告訴 CMake 你的程序要安裝在哪個位置。比如你的主程序,這個要程使用 install 命令:

  1. install(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/Hello-${Hello_VERSION}" TYPE DATA)

這里有一些新的參數。DIRECTORY 參數指定了數據文件是一個目錄,而不是一個文件(FILE)或者腳本(SCRIPT)。你使用的參數和復制一些額外文件到編譯目錄時是一樣。另外,在 install 命令中 TYPE 或者 DESTINATION 必須要指定其一。TYPE 參數指定了通用的文件類型,這些文件通常將會被放到合適的位置。在 Linux 系統上,TYPE DATA 一般是 /usr/local/share 或者 /usr/share,除非用戶定義了其他的位置。

這是諸如 CMake 之類的良好構建系統的強大功能之一。你不必擔心文件的確切位置,因為你知道用戶可以更改 CMake 的首選默認設置,并且 CMake 將構建代碼以使其正常工作。

運行 CMake

CMake 有多種方式來讓你執行命令,你可以在終端或者在一個可交互的程序上執行命令,或者你也可以使用它的圖形界面(GUI)。我比較偏向于使用終端命令,但是我也喜歡使用一些其他的方式(相比與在 Makefile 中查找那些晦澀的變量然后去修改它們更勝一籌)。

對于編譯過開源 C++ 項目的任何人,都熟悉的第一步是創建一個 build 目錄,進入到該目錄,然后運行 cmake .. 命令。 我是一個懶惰的打字員,所以我將構建目錄命名為 b,但是你可以使用最合適的方式:

  1. $ mkdir b
  2. $ cd b
  3. $ cmake ..
  4. -- The C compiler identification is GNU 11.1.1
  5. -- The CXX compiler identification is GNU 11.1.1
  6. -- Detecting C compiler ABI info
  7. -- Detecting C compiler ABI info - done
  8. -- Check for working C compiler: /usr/bin/cc - skipped
  9. -- Detecting C compile features
  10. -- Detecting C compile features - done
  11. -- Detecting CXX compiler ABI info
  12. -- Detecting CXX compiler ABI info - done
  13. -- Check for working CXX compiler: /usr/bin/c++ - skipped
  14. -- Detecting CXX compile features
  15. -- Detecting CXX compile features - done
  16. -- Configuring done
  17. -- Generating done
  18. -- Build files have been written to: /var/home/seth/demo-hello/b
  19. $

這或多或少相當于經典的 ./configure; make; make install 中的 ./configure。看一下你的構建目錄,CMake 已經幫你生成了幾個新的文件,來讓你的項目更完整。這里生成了 CMake 的數據文件、一個常規的 Makefile 文件(這是一個免費提供的 247 行的文件,但對于越復雜的項目,行數要多得多),還有一個包含這個示例程序的任意非編譯數據的 Hello-1.0 目錄。

  1. $ ls
  2. CMakeCache.txt
  3. CMakeFiles
  4. Makefile
  5. Hello-1.0
  6. cmake_install.cmake

接下來,你可以進行構建。你可以使用 CMake 的 --build 選項來做這件事,使用當前的構建目錄作為源目錄。

  1. $ cmake --build .
  2. Scanning dependencies of target Hello
  3. [ 50%] Building C object CMakeFiles/Hello.dir/hello.c.o
  4. [100%] Linking C executable Hello
  5. [100%] Built target Hello

或者你可以運行 make 命令。這將讀取由 CMake 生成的 Makefile 文件。在這個例子中,make 默認的行為就是由源程序 hello.c 生成目標文件。

  1. $ make
  2. Scanning dependencies of target Hello
  3. [ 50%] Building C object CMakeFiles/Hello.dir/hello.c.o
  4. [100%] Linking C executable Hello
  5. [100%] Built target Hello
  6. $

如你所料,Hello 二進制可執行文件現在存在于當前的構建目錄中。因為它是一個簡單的自包含應用程序,所以你可以運行它進行測試:

  1. $ ./Hello
  2. Hello open source
  3. $

最后,你可以用 --install 選項進行安裝。因為我不希望我的簡單的 “hello world” 應用程序真的被安裝到我的系統上,我設置了 --prefix 選項,將 CMake 的目標從根目錄(/)重定向到 /tmp 的一個子目錄。

  1. $ cmake --install . --prefix /tmp/hello/
  2. -- Install configuration: ""
  3. -- Installing: /tmp/dist-hello/usr/local/bin/Hello
  4. -- Installing: /tmp/dist-hello/usr/local/share/Hello-1.0
  5. -- Installing: /tmp/dist-hello/usr/local/share/Hello-1.0/assets/file0
  6. -- Installing: /tmp/dist-hello/usr/local/share/Hello-1.0/assets/file1

另外,你也可以運行 make install 來調用 Makefile 的安裝動作。同樣,為了避免在我的系統上安裝一個演示程序,我在這個例子中設置了 DESTDIR 變量,將安裝目標重定向到 /tmp 的一個子目錄:

  1. $ mkdir /tmp/dist-hello
  2. $ make install DESTDIR=/tmp/dist-hello
  3. [100%] Built target Hello
  4. Install the project...
  5. -- Install configuration: ""
  6. -- Installing: /tmp/dist-hello/usr/local/bin/Hello
  7. -- Installing: /tmp/dist-hello/usr/local/share/Hello-1.0
  8. -- Installing: /tmp/dist-hello/usr/local/share/Hello-1.0/assets/file0
  9. -- Installing: /tmp/dist-hello/usr/local/share/Hello-1.0/assets/file1

看一下輸出的內容,來確定它具體的安裝位置,這個程序已經安裝好了。

快速自定義

CMake 的安裝前綴(由 CMAKE_INSTALL_PREFIX 變量指定)默認是在 /usr/local 這個位置,但是所有的 CMake 變量都可以在你運行 cmake 命令的時候,加一個 -D 選項來改變它。

  1. $ cmake -DCMAKE_INSTALL_PREFIX=/usr ..
  2. $ make install DESTDIR=/tmp/dist-hello
  3. $ make install DESTDIR=/tmp/dist-hello
  4. [100%] Built target Hello
  5. Install the project...
  6. -- Install configuration: ""
  7. -- Installing: /tmp/dist-hello/usr/bin/Hello
  8. -- Installing: /tmp/dist-hello/usr/share/Hello-1.0
  9. -- Installing: /tmp/dist-hello/usr/share/Hello-1.0/assets/file0
  10. -- Installing: /tmp/dist-hello/usr/share/Hello-1.0/assets/file1

所有由 CMake 使用的變量都可以通過這種方式來修改。

交互式的 CMake

CMake 的交互模式是一種用于配置安裝環境的友好而有用的方法。要讓用戶知道該項目使用的所有可能的 CMake 變量是一件工作量很大的事,因此 CMake 交互式界面是他們無需查看 Makefile 和 CMakeLists 即可發現自定義選項的簡便方法。

為了調用這個交互式的 CMake,使用 ccmake 命令,在這個簡單的項目里沒有太多的東西。但是對于像 Rosegarden 這樣的大型項目,這將非常有用。

 

Rosegarden

CMake 的更多知識

還有很多很多的 CMake 知識需要去了解。作為一個開發者,我非常喜歡它簡潔的語法、詳盡的文檔、可擴展性以及便捷性。作為一個用戶我非常喜歡 CMake 友好且實用的錯誤提示信息還有它的用戶界面,如果你的項目還未開始使用構建系統,請了解一下 CMake 吧。你以及以后嘗試打包你應用程序的任何人都不會后悔。 

責任編輯:龐桂玉 來源: Linux中國
相關推薦

2010-04-16 15:19:18

新一代數據中心

2025-01-10 13:36:24

2013-05-13 13:27:50

服務器接入萬兆10GBase-T

2012-02-08 16:31:09

IBM玉柴重工Power7服務器

2015-07-17 11:08:13

GoogleOpenStack

2022-11-03 14:56:12

物聯網清潔能源

2020-10-24 14:01:50

機器人人工智能學習

2009-10-20 14:59:48

智能建筑綜合布線系統

2011-03-24 10:33:28

私有云

2019-08-14 10:20:57

GNU Autotoo

2018-07-04 10:45:29

數字化

2015-06-01 10:05:41

數據中心萬兆以太網

2025-07-10 08:22:50

2017-08-07 09:32:09

5G網絡虛擬化切片

2021-05-17 15:08:24

局域通信技術廣域通信技術智能時代

2016-07-07 10:53:12

H3C

2013-01-29 10:22:41

IBM大型主機四川農信

2022-12-14 09:51:04

Twitter開源

2022-12-01 10:07:16

數據
點贊
收藏

51CTO技術棧公眾號

91精品久久| 日批视频免费观看| 欧美一区二区三区影院| 国产精品无码专区| 青青草免费在线| 中文字幕一区日韩精品 | 国产成人亚洲综合| 999在线观看免费大全电视剧| 日本高清一区二区视频| 国产精品高潮呻吟av| 高清精品xnxxcom| 国产精品乱码一区二区三区软件| 久久久国产精品x99av| 无码毛片aaa在线| 久久免费看少妇高潮v片特黄 | 99视频免费看| 澳门精品久久国产| 亚洲美女视频在线| 亚洲91av视频| 777一区二区| 国产suv精品一区二区69| 日韩午夜免费| 欧美挠脚心视频网站| 99电影在线观看| 日韩精品在线免费视频| 日韩中文字幕视频网| 一区在线中文字幕| 日本成熟性欧美| asian性开放少妇pics| 韩国av网站在线| 国精产品一区一区三区mba桃花 | 久久久久久久久久久久久久久国产| 爆操欧美美女| 国产精品18久久久| 美女少妇精品视频| 99视频在线免费| 亚洲国产成人精品一区二区三区| 日韩中文一区二区| 欧美精品高清视频| 国内外免费激情视频| 免费国产精品视频| 欧美成人福利| 2019国产精品| 国产精品777| 国产无套粉嫩白浆内谢| 亚洲网一区二区三区| 欧美日韩五月天| 黑人欧美xxxx| 欧美日韩一区二区三区在线看| 妺妺窝人体色www看人体| www.欧美国产| 中文日韩欧美| 国产偷亚洲偷欧美偷精品| 在线观看成人免费| 蜜芽在线免费观看| 高清国产一区二区| 性欧美xxxx交| 久久久久久久9999| 亚州综合一区| 亚洲美女一区二区三区| 欧美日韩在线免费观看视频| wwwav在线播放| 国产成人在线视频免费播放| 亚洲一区二区久久久久久| 国产精品 欧美激情| 久久神马影院| 日韩一区二区三区视频在线观看| 国产午夜福利在线播放| 国产精品一级伦理| 久久人人精品| 欧美老女人性视频| 在线精品一区二区三区| 国产一区福利| 日韩精品视频免费| 国产成人精品视频免费看| 免费黄色在线网站| 国产精品黄色在线观看| 久久久福利视频| 日本中文字幕第一页| 日韩免费高清| 欧美一区欧美二区| 国产女女做受ⅹxx高潮| 在线观看的av| 日本亚洲三级在线| 午夜精品三级视频福利| 久久中文字幕免费| 首页国产精品| 久久精品人人做人人爽| 久久久久免费看| 久久综合九色| 亚洲字幕一区二区| 欧美一区二区少妇| 亚洲欧美精品午睡沙发| 国产v片免费观看| 色综合久久久久综合一本到桃花网| 国产三级一区二区三区| 国产精品一区二区3区| 亚洲av无码一区二区三区在线| 性欧美lx╳lx╳| 精品久久久av| www.中文字幕在线观看| 美洲天堂一区二卡三卡四卡视频| 3344国产精品免费看| 视频国产一区二区| 免费观看在线一区二区三区| 日韩欧美精品中文字幕| 九九爱精品视频| 欧美韩日亚洲| 日本一区二区久久| 欧美精品亚洲精品| 亚洲欧美激情另类| 天堂影院一区二区| 97欧洲一区二区精品免费| 国产精品传媒在线观看| 国产一区二区三区在线观看免费视频| 国产精品久久久久免费a∨大胸| 1级黄色大片儿| 午夜国产欧美理论在线播放| 亚洲国产精品人人爽夜夜爽| 亚洲欧美日韩偷拍| 精品一区二区三区亚洲| 亚洲人午夜色婷婷| 午夜剧场免费看| 久久电影在线| 欧美成人精精品一区二区频| 色哟哟网站在线观看| 久久国内精品| 亚洲精品久久久一区二区三区| 成人一级黄色大片| 美女高潮久久久| 国产日韩在线看| 一级α片免费看刺激高潮视频| 蜜桃视频第一区免费观看| 久久精品国产第一区二区三区最新章节| 黄色在线播放网站| 欧美日韩高清不卡| 美女网站视频黄色| 成人豆花视频| 精品国产伦一区二区三区免费| 国产女主播在线播放| 日韩伦理一区二区三区| 久久久久久久久91| 中日韩黄色大片| av资源站一区| 欧美激情视频一区二区三区| av免费不卡| 一二三区精品视频| 国产在线播放观看| 日韩精品一级| 久久精品精品电影网| 国产又粗又大又黄| 99精品国产热久久91蜜凸| 日韩在线电影一区| av网站网址在线观看| 欧美美女bb生活片| 一起草在线视频| 欧美精品网站| 国产精品99蜜臀久久不卡二区| 欧洲伦理片一区 二区 三区| 色妹子一区二区| 欧美一级xxxx| 亚洲成人精品| 5566成人精品视频免费| 成人黄色在线观看视频| 亚洲国产日韩精品| 国产男女无遮挡| 国产欧美高清视频在线| www日韩中文字幕在线看| 欧美黄色免费看| 日韩高清欧美激情| 成人精品在线视频| 精品av中文字幕在线毛片| 亚洲三级在线免费观看| 欧美日韩在线一| 伊人久久大香线蕉| 国产欧美精品一区二区三区-老狼| 日本中文字幕在线观看| 欧美一区二区久久| 可以在线观看av的网站| 中文字幕国产精品一区二区| 善良的小姨在线| 奇米影视777在线欧美电影观看| 精品国偷自产在线| jlzzjlzz亚洲女人18| 图片区小说区国产精品视频| 午夜剧场在线免费观看| 一区二区在线| 欧美资源在线观看| 在线视频91p| 精品国产免费人成在线观看| 色老头一区二区| 国产综合久久久久久久久久久久| 国产亚洲精品久久久久久久| 久久天天久久| 久久久久久久久久久人体| 午夜视频免费在线| 亚洲免费电影在线| 网站免费在线观看| 亚洲在线播放| 国产伦精品一区二区| www久久日com| 亚洲精品美女久久久| 一级特黄特色的免费大片视频| 亚洲精品视频在线观看免费| xxx在线播放| 久久蜜桃精品| 日本一区二区三区四区五区六区| 亚洲国产最新| 官网99热精品| free性m.freesex欧美| 日韩精品在线播放| 国产精品高潮呻吟av| 欧美日韩在线视频一区| 欧美成人精品激情在线视频| 成人污污视频在线观看| 欧洲精品在线播放| 免费看成人吃奶视频在线| 97精品国产97久久久久久| 麻豆网站在线| 一本色道久久88亚洲综合88| 精品少妇一二三区| 国产女人水真多18毛片18精品视频 | 日韩av大片在线| 亚洲国产精品二区| 欧美日韩视频一区二区| chinese国产精品| 亚洲1区2区3区4区| 亚洲欧美日韩色| 国产综合色在线视频区| 一级特黄性色生活片| 国产精品亚洲片在线播放| 444亚洲人体| 激情不卡一区二区三区视频在线| 国产精品一区久久| 电影亚洲精品噜噜在线观看| 精品国产网站在线观看| 国产精品久久久久久久久毛片 | 欧美久久久久久久久久久| 久久国产人妖系列| 黄色片在线免费| 日韩精品成人一区二区在线| 男人揉女人奶房视频60分| 亚洲精品系列| 欧美高清性xxxxhd| 台湾佬综合网| 麻豆91蜜桃| 国产情侣一区在线| 91精品久久久久久久| 黄色成人在线观看网站| 国产精品极品美女粉嫩高清在线| 毛片在线播放a| 亚洲性xxxx| 精品国产亚洲av麻豆| 欧美日韩大陆一区二区| 国产精品久久久午夜夜伦鲁鲁| 欧美精品一卡两卡| 一本久道久久综合无码中文| 日本高清免费不卡视频| 丰满人妻一区二区三区四区| 欧美色综合久久| 中文字幕在线观看你懂的| 亚洲精品国产无天堂网2021| 在线视频 日韩| 国产69精品一区二区亚洲孕妇 | 进去里视频在线观看| 欧美视频三区在线播放| 久草中文在线视频| 亚洲午夜电影网| 免费91在线观看| 国产毛片精品视频| 三级a在线观看| 日本女人一区二区三区| 天堂在线中文在线| 成人小视频免费在线观看| 中文字幕a在线观看| 2024国产精品| 日本在线播放一区二区| 国产精品18久久久久久久网站| 亚洲香蕉中文网| 91欧美一区二区| 日本黄色激情视频| ...xxx性欧美| 国产精品自拍视频一区| 最新国产の精品合集bt伙计| 国产一级一级片| 色婷婷激情久久| 国产成人亚洲精品自产在线| 91激情五月电影| 国产精品视频第一页| 精品国产乱码久久久久久蜜臀| 深夜福利视频在线免费观看| 日韩精品在线一区二区| 姑娘第5集在线观看免费好剧| 日韩一区二区在线看| 神马一区二区三区| 精品国产一二三| 成人午夜影视| 一区二区成人精品| 青草在线视频| 国产精品一区二区三区免费视频 | 欧美人妻一区二区| 精品久久久视频| 国产精品-色哟哟| 亚洲欧洲在线观看| 欧美人与动牲性行为| 国产精品欧美日韩久久| 精品国产午夜肉伦伦影院| 久久久国产精华液999999| 神马久久影院| 欧美成人在线免费观看| 欧美精品综合| 波多野结衣作品集| 国产传媒日韩欧美成人| 农村老熟妇乱子伦视频| 欧美性xxxx极品高清hd直播| 性欧美videos另类hd| 中文字幕av日韩| 在线观看免费版| 久久久久久久亚洲精品| 国产成年精品| 亚洲bbw性色大片| 99精品全国免费观看视频软件| 涩涩涩999| 国产模特精品视频久久久久| 天天做天天干天天操| 国产日韩视频一区二区三区| 成年人免费看毛片| 精品日韩在线一区| 黄色免费网站在线| 国产剧情久久久久久| 国产精品一线天粉嫩av| 欧美精品自拍视频| 丰满亚洲少妇av| 欧美色图一区二区| 日韩一级片网站| sese一区| 国产精品久久久久久久久粉嫩av | 99久久婷婷国产综合精品首页 | 激情久久一区二区| 日本在线观看一区二区| 亚洲经典自拍| 亚洲区 欧美区| 亚洲精品久久久蜜桃| 国产黄色高清视频| 欧美猛男性生活免费| 日本一区二区三区中文字幕| 欧美又大又粗又长| www.亚洲一二| 人妻少妇精品无码专区二区| 91视频福利网| 久久精品国产免费| 强制高潮抽搐sm调教高h| 777午夜精品免费视频| 国产字幕在线观看| 亚洲欧美激情精品一区二区| 欧美成人xxx| 成人性生交大片免费看视频直播| 99久久婷婷这里只有精品| 日韩在线第三页| 国产精品女主播av| 国产免费高清视频| 亚洲欧美日韩成人| 四虎4545www精品视频| 日韩美女在线播放| 国产免费久久| 亚洲午夜激情影院| 亚洲精品大片www| 天堂av在线免费| 国产成人精品电影久久久| 国产日产精品_国产精品毛片| 成人亚洲精品777777大片| 自拍偷自拍亚洲精品播放| 性中国古装videossex| 久久久久国产精品一区| 国产精品毛片视频| 97xxxxx| 久久久久久电影| 久久久久成人精品无码| 亚洲精品第一页| 国产69精品久久| 糖心vlog在线免费观看| 粉嫩绯色av一区二区在线观看| 国产精品视频免费播放| 亚洲美女喷白浆| av日韩久久| 视频一区不卡| 高清不卡一区二区| 精品人妻一区二区三区潮喷在线 | 欧美www视频| xxx.xxx欧美| 国产噜噜噜噜久久久久久久久| 91精品国产成人观看| 久久精品无码一区二区三区毛片 | 久久久久久久999精品视频| 亚洲涩涩av| aaa一级黄色片| 婷婷六月综合亚洲| 1024国产在线| 成人黄色片视频网站| 蜜桃av一区二区三区|