精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

成人激情小说乱人伦| 精品视频一区二区三区| 国产亚洲欧美在线| 国产成人一区二区三区电影| 极品人妻videosss人妻| 欧洲精品久久久久毛片完整版| 亚洲精品写真福利| 久久久国产精品一区二区三区| 成人在线视频网| 日韩美女爱爱视频| 亚洲欧美综合一区二区| 麻豆成人av在线| 色综合视频网站| a毛片毛片av永久免费| 日韩第二十一页| 婷婷丁香久久五月婷婷| 在线观看免费91| 天堂网av在线播放| 国产在线一区观看| 国产精品久久久久久久久久久新郎 | 精品一二三四五区| 欧美一级在线免费观看| 日韩av电影天堂| 久久久久久网址| 91无套直看片红桃在线观看| 欧美一级色片| 欧美一区二区三区在线视频| 无码aⅴ精品一区二区三区浪潮| 黄色成人在线| 久久久久久电影| 国产免费高清一区| 99在线精品视频免费观看软件| 亚洲一区二区三区免费在线观看 | 国产日产在线观看| 婷婷国产精品| 亚洲第一偷拍网| 涩多多在线观看| 福利一区二区| 在线影视一区二区三区| 免费看又黄又无码的网站| 污视频在线免费观看网站| 国产精品九色蝌蚪自拍| 日韩欧美亚洲日产国| 男人的天堂在线视频| 成人国产电影网| 动漫3d精品一区二区三区| 国产免费黄色大片| 精品一二线国产| 国产在线观看一区二区三区 | 国产综合一区二区| 国产精品入口免费视| 黄瓜视频在线免费观看| 国产日韩欧美| 2019av中文字幕| 成年人免费高清视频| 亚洲神马久久| 日本久久久久久| 日本久久综合网| 亚洲免费网址| 亚洲永久免费| 精品视频资源站| 亚洲老女人av| 亚洲香蕉久久| 91精品国产乱码久久蜜臀| 婷婷激情5月天| 欧美日韩黄网站| 精品欧美一区二区在线观看| 午夜视频在线免费看| 亚洲专区**| 亚洲激情电影中文字幕| 偷偷色噜狠狠狠狠的777米奇| 免费福利视频一区| 亚洲一级黄色片| 长河落日免费高清观看| 天天av综合| 久久久久久久久久av| 国产 欧美 日韩 在线| 久久久久久婷| 91久久久久久久一区二区| 亚洲成人中文字幕在线| 9i在线看片成人免费| 日本午夜精品一区二区三区| 男人天堂久久久| 亚洲午夜精品在线| 久久久精品在线视频| 欧美男男gaygay1069| 欧美岛国在线观看| 国内精品久久99人妻无码| 成人羞羞视频播放网站| 欧美国产精品日韩| 黄色av网站免费观看| 国产在线观看免费一区| 黑人巨大精品欧美一区二区小视频| 男男激情在线| 亚洲免费在线视频| 99精品人妻少妇一区二区| 日本成人在线网站| 日韩成人久久久| а天堂中文在线资源| 在线日韩欧美| 91精品国产综合久久男男| 人妻一区二区三区| 国产精品久久久久aaaa| 男人揉女人奶房视频60分| 国产剧情一区二区在线观看| 亚洲乱码一区二区| 国产一区二区播放| 日韩国产成人精品| 国产一区二区在线网站| 日本暖暖在线视频| 日韩欧美在线观看| 不许穿内裤随时挨c调教h苏绵| 国产探花一区在线观看| 久久久久在线观看| 国产精品老熟女视频一区二区| 久久综合中文字幕| 天堂8在线天堂资源bt| 成人午夜一级| 亚洲欧美日韩直播| 亚洲综合一二三| 国产成人综合网| 伊人久久99| 精品裸体bbb| 日韩精品中文字| 国产亚洲精品久久久久久打不开| 久热成人在线视频| 欧美亚洲免费高清在线观看| 水蜜桃亚洲一二三四在线| 成人在线网址| 成人影院天天5g天天爽无毒影院| 久久99久久亚洲国产| 伊人成年综合网| jiyouzz国产精品久久| 国产成年人在线观看| 桃花岛成人影院| 亚洲精品福利资源站| 久久久久久久极品内射| 激情欧美日韩一区二区| 亚洲高清资源综合久久精品| 韩国主播福利视频一区二区三区| 亚洲高清色综合| 一区二区三区免费高清视频| 国产在线精品一区二区夜色 | 僵尸再翻生在线观看免费国语| 欧美日韩国产大片| 极品久久久久久久| 日韩激情视频在线观看| 欧美日韩在线精品| 欧美一级大片| 国产亚洲视频中文字幕视频| 国产寡妇亲子伦一区二区三区四区| 99这里只有精品| 亚洲人成无码网站久久99热国产| 99香蕉久久| 国自在线精品视频| 日产精品久久久久久久性色| 午夜欧美一区二区三区在线播放 | 国产午夜精品理论片a级大结局 | 在线高清av| 亚洲女人被黑人巨大进入al| 国内自拍视频在线播放| 国产亚洲精品7777| 国产精品igao| 日韩专区精品| 69堂成人精品视频免费| 丁香花电影在线观看完整版| 亚洲精品99999| 亚洲黄网在线观看| 亚洲欧美一区二区视频| 免费在线观看日韩av| 99在线精品视频在线观看| 麻豆av福利av久久av| 亚洲第一会所001| 久久久精品国产| 欧美少妇bbw| 色8久久精品久久久久久蜜| 国产一区二区三区视频播放| 国产又黄又大久久| 欧美深夜福利视频| 欧州一区二区| 99三级在线| 亚洲美女炮图| 久久精品人人做人人爽| 免费观看a视频| 欧美伊人精品成人久久综合97| 日本午夜在线观看| av一区二区三区在线| 亚洲天堂av线| 激情欧美一区| 亚洲成人自拍视频| 中文字幕区一区二区三| 日本一区二区三区四区视频| 黄色网址在线免费观看| 亚洲精品理论电影| 国产又粗又猛又黄| 午夜精品福利视频网站| 日本黄区免费视频观看| 成人毛片视频在线观看| 国产又黄又猛又粗又爽的视频| 欧美韩日精品| 日韩不卡av| 国产精品qvod| 国产精品永久免费视频| 欧美videos另类精品| 中文字幕日韩精品有码视频| 东京干手机福利视频| 欧洲激情一区二区| 日本亚洲欧美在线| 日韩毛片精品高清免费| 国产特黄级aaaaa片免| 国产成人免费视| 日韩中文字幕a| 天堂蜜桃一区二区三区| 男女私大尺度视频| 国产欧美日本| 亚洲精品在线免费播放| 毛片在线免费视频| 亚洲精品中文在线影院| 欧美午夜激情影院| 91美女片黄在线| 婷婷五月精品中文字幕| 国产在线视频精品一区| 亚洲少妇久久久| 久久aⅴ国产紧身牛仔裤| 999一区二区三区| 亚洲精品二区三区| 亚洲精品乱码久久久久久蜜桃91| 日本毛片在线观看| 成人在线免费观看网站| 91免费在线视频| 成人国产在线| 国产精品高潮粉嫩av| 亚洲天堂资源| 4388成人网| 日本黄色免费在线| 97视频com| 女海盗2成人h版中文字幕| 欧美激情18p| 欧美aaa免费| 欧美日韩国产123| 影音先锋在线播放| 久久成人精品视频| 国产精品刘玥久久一区| www.亚洲一区| 美女隐私在线观看| 久久久精品一区二区三区| 中文字幕在线视频区| 尤物九九久久国产精品的特点| 毛片在线免费| 亚洲视频999| av片在线免费观看| www.亚洲免费视频| 色噜噜狠狠狠综合欧洲色8| 欧美精品一区二区免费| 丝袜中文在线| 97精品一区二区三区| 欧美另类老肥妇| 国产成人免费av| 日韩国产91| 99中文字幕| 欧美人与动xxxxz0oz| 欧美午夜欧美| 久久中文视频| 欧美亚洲色图视频| 9色精品在线| www日韩视频| 激情五月婷婷综合网| 日本wwwxx| 99久久精品99国产精品| 欧美 日韩 成人| 国产精品夫妻自拍| 免费无码毛片一区二区app| 黄色一区二区在线| 中文在线字幕免费观| 91精品国产aⅴ一区二区| 亚洲精品成av人片天堂无码| 日韩高清不卡av| 日本成人网址| 97精品一区二区| 中国老女人av| 国产一区二区三区成人欧美日韩在线观看| 2022亚洲天堂| 久草这里只有精品视频| 久久精品aⅴ无码中文字字幕重口| 96av麻豆蜜桃一区二区| 国产传媒视频在线| 夜夜精品视频一区二区 | 亚洲热在线视频| 97久久超碰国产精品电影| 无码人中文字幕| 亚洲一区二区三区在线播放| 精品黑人一区二区三区| 国产精品久久久久久久久久久新郎| 欧美欧美一区二区| 日韩精品网站| 青草视频在线观看视频| 日韩高清在线观看| 性欧美18—19sex性高清| 中文字幕欧美区| 国产极品在线播放| 亚洲精品韩国| 国产精品区在线| 成人av网站免费| 91制片厂在线| 欧美性猛交xxxx免费看| 精品国自产拍在线观看| 国产亚洲精品久久| 白浆视频在线观看| 成人字幕网zmw| 国产精品片aa在线观看| 蜜臀av色欲a片无码精品一区| 免费xxxx性欧美18vr| 亚洲精品乱码久久久久久蜜桃图片| 中文字幕永久在线不卡| 亚洲精品成人在线视频| 精品乱人伦小说| 欧美黄色激情| 国产成人啪精品视频免费网| 国产欧美啪啪| 特色特色大片在线| 日本成人在线不卡视频| 97伦伦午夜电影理伦片| 亚洲国产成人精品视频| 国产色视频在线| 色偷偷88888欧美精品久久久| 英国三级经典在线观看| 国产免费高清一区| 国产精品成人一区二区网站软件| 亚洲精品www.| 中文字幕的久久| 无码视频在线观看| 亚洲欧美激情精品一区二区| heyzo高清在线| 国产传媒一区| 久久久久久久久久久久久久| 九九九在线观看视频| 国产无一区二区| 在线观看日本视频| 日韩精品日韩在线观看| 黄色在线网站噜噜噜| 国产亚洲精品美女久久久m| 红桃视频亚洲| 亚洲性图第一页| 亚洲综合网站在线观看| 亚洲av永久无码国产精品久久 | 在线看的片片片免费| 欧美日韩在线播| 日本电影全部在线观看网站视频 | 国产+成+人+亚洲欧洲在线| 奇米777四色影视在线看| 国产精品99久久久久久宅男| 青娱乐av在线| 精品99一区二区三区| 成人影院在线视频| 乱一区二区三区在线播放| 爽爽淫人综合网网站| 中文字幕有码在线播放| 欧美午夜精品理论片a级按摩| av网站在线播放| 91精品在线看| 国产精品99免费看| 男女一区二区三区| 色哟哟国产精品免费观看| yjizz视频网站在线播放| 国产欧美日韩高清| 91精品国产调教在线观看| 极品白嫩少妇无套内谢| 亚洲宅男天堂在线观看无病毒| 少妇高潮一区二区三区99小说| 51视频国产精品一区二区| 国产日产精品_国产精品毛片| 一区二区免费av| 亚洲黄色小说网站| 国产1区在线观看| 国产不卡视频在线| 999精品在线| 奇米777第四色| 在线观看亚洲专区| av毛片在线免费| 久久66热这里只有精品| 日本午夜精品一区二区三区电影| 91n在线视频| 亚洲国产毛片完整版| 成人做爰视频www| 美女av免费观看| 久久精品人人做人人综合| 国产叼嘿视频在线观看| 3344国产精品免费看| 1024精品久久久久久久久| 亚洲少妇18p| 欧美日韩国产综合久久| f2c人成在线观看免费视频| 亚洲成人18| 成人动漫av在线| 亚洲网站免费观看| 91精品国产高清自在线| 婷婷色综合网| 色无极影院亚洲| 日韩欧美一级精品久久| 欧美日韩在线精品一区二区三区激情综合|