日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

vcpkg快速入门手册

發(fā)布時(shí)間:2023/12/31 c/c++ 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 vcpkg快速入门手册 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

    • 1. 簡介
    • 2. 安裝與使用
      • 2.1 獲取vcpkg
      • 2.2 編譯vcpkg
      • 2.3 vcpkg的文件夾層次結(jié)構(gòu)
      • 2.4 設(shè)置vcpkg的環(huán)境變量
      • 2.5 vcpkg的常用命令
      • 2.6 安裝包與Visual Studio集成
    • 3. 常見的C++庫的CMake配置方式
      • 3.1 Boost
      • 3.2 cereal
      • 3.3 Ceres Solver
      • 3.4 CGAL
      • 3.5 FLANN
      • 3.6 GDAL
      • 3.7 GLEW
      • 3.8 GMP
      • 3.9 GTest
      • 3.10 GSL
      • 3.11 HDF5
      • 3.12 Lastools/Laslib
      • 3.13 OpenCV
      • 3.14 OpenNI2
      • 3.15 OSG
      • 3.16 PDAL
      • 3.17 PROJ
      • 3.18 Pybind11庫
      • 3.19 Range-v3
      • 3.20 SltBench
      • 3.21 VTK
    • 4. vcpkg常見的錯(cuò)誤解決
      • 4.1 未安裝VS英文語言包
      • 4.2 未關(guān)閉防病毒軟件
      • 4.3 未正確下載軟件源
      • 4.4 常見C++庫編譯錯(cuò)誤的解決辦法

如果你希望了解vcpkg,希望解決包括如何使用vcpkg構(gòu)建軟件包,如何將vcpkg構(gòu)建的軟件包集成到Visual Studio,如何使用vcpkg構(gòu)建指定版本的軟件包,如何解決vcpkg的常見報(bào)錯(cuò)信息,如何與CMake配合構(gòu)建工程等等問題,請你認(rèn)真閱讀本文檔以快速入門!

1. 簡介

vcpkg 是適用于 C 和 C++ 庫的跨平臺(tái)命令行包管理器。 它簡化了 Windows、Linux 和 macOS 上第三方庫的購置與安裝。 如果項(xiàng)目要使用第三方庫,建議通過 vcpkg 來安裝它們。 vcpkg 同時(shí)支持開源和專有庫。 已測試 vcpkg Windows 目錄中所有庫與 Visual Studio 2015、Visual Studio 2017 及 Visual Studio 2019 的兼容性。 在 Windows 和 Linux/macOS 目錄之間,vcpkg 現(xiàn)已支持?jǐn)?shù)千個(gè)庫。 C++ 社區(qū)會(huì)不斷向兩個(gè)目錄添加更多的庫。

微軟官方介紹鏈接

2. 安裝與使用

2.1 獲取vcpkg

vcpkg的官方源碼站點(diǎn)為:https://github.com/microsoft/vcpkg

可以使用git命令獲取官方代碼倉庫

git clone https://github.com/microsoft/vcpkg

2.2 編譯vcpkg

  • Windows平臺(tái)

    在控制臺(tái)中切換到vcpkg所在目錄,運(yùn)行vcpkg目錄下的bootstrap-vcpkg.bat命令,編譯好后會(huì)在vcpkg所在目錄下生產(chǎn)vcpkg.exe文件。

    C:\Users\Administrator>F:F:\>cd vcpkg/vcpkgF:\vcpkg\vcpkg>bootstrap-vcpkg.bat

    注意:最新版官方去掉了本地編譯的過程,會(huì)從官方倉庫中下載已經(jīng)生成好的vcpkg.exe文件

  • Linux平臺(tái)

    在終端中執(zhí)行vcpkg目錄下的sudo bash ./ bootstrap-vcpkg.sh命令,會(huì)生成一個(gè)可執(zhí)行文件vcpkg。定義環(huán)境變量VCPKG_ROOT="/vcpkg"

2.3 vcpkg的文件夾層次結(jié)構(gòu)

所有 vcpkg 功能和數(shù)據(jù)都自包含在實(shí)例的單獨(dú)目錄層次結(jié)構(gòu)中。 沒有注冊表設(shè)置或環(huán)境變量。 可以在一臺(tái)計(jì)算機(jī)上設(shè)置任意數(shù)量的 vcpkg 實(shí)例,它們彼此互不干擾。vcpkg 的文件夾層次結(jié)構(gòu)如下:

  • buildtrees - 包含從中生成每個(gè)庫的源的子文件夾。
  • docs - 文檔和示例。
  • downloads - 所有已下載的工具或源的緩存副本。 運(yùn)行安裝命令時(shí),vcpkg 會(huì)首先搜索此處。
  • installed - 包含每個(gè)已安裝庫的標(biāo)頭和二進(jìn)制文件。 與 Visual Studio 集成時(shí),實(shí)質(zhì)上是相當(dāng)于告知它將此文件夾添加到其搜索路徑。
  • packages - 在不同的安裝之間用于暫存的內(nèi)部文件夾。
  • ports - 用于描述每個(gè)庫的目錄、版本和下載位置的文件。 如有需要,可添加自己的端口。
  • scripts - 由 vcpkg 使用的腳本(CMake、PowerShell)。
  • toolsrc - vcpkg 和相關(guān)組件的 C++ 源代碼。
  • triplets - 包含每個(gè)受支持目標(biāo)平臺(tái)(如 x86-windows 或 x64-uwp)的設(shè)置。

2.4 設(shè)置vcpkg的環(huán)境變量

為了方便vcpkg的使用,建議在環(huán)境變量中設(shè)置如下值:

環(huán)境變量值描述
VCPKG_DEFAULT_TRIPLETx64-windowsvcpkg默認(rèn)構(gòu)建的三元組,通常在Windows 64位平臺(tái)下可以直接設(shè)置為x64-windows
VCPKG_ROOTF:\vcpkg\vcpkgvcpkg的工作目錄,對于本地存在多個(gè)版本的vcpkg,不建議設(shè)置此變量
VCPKG_DOWNLOADSF:\vcpkg\downloadsvcpkg下載軟件源和工具的緩存目錄,建議保留此文件夾中的所有文件。

2.5 vcpkg的常用命令

  • help命令

    可以查看vcpkg的常用命令

    vcpkg help
  • install命令

    安裝一個(gè)指定的軟件包,該C++軟件包必須被vcpkg支持,即在ports文件夾內(nèi)能找到該軟件包的端口描述。

    vcpkg install gdal

    需要注意的是,通常一個(gè)軟件包可以附帶多種其他三方庫的功能支持,部分功能已經(jīng)被vcpkg支持(可以通過searchsearchsearch命令查看軟件包附帶的第三方支持),通過vcpkg安裝軟件包時(shí)也可以同時(shí)制定三方庫特性的支持。例如安裝一個(gè)Windows系統(tǒng)64位版本的帶libspatialite支持的gdal庫可以使用如下命令:

    vcpkg install gdal[core,libspatialite] --triplet=x64-windows

    vcpkg在編譯軟件包時(shí),會(huì)將從軟件包官方源中下載到的tar格式源碼解壓到buildtrees文件夾,并且編譯的中間文件也會(huì)在buildtrees文件夾。默認(rèn)情況下,buildtrees文件夾在vcpkg的根目錄下,也可以在安裝軟件包時(shí)指定buildtrees文件夾的實(shí)際位置,例如:

    vcpkg install gdal[core,libspatialite] --triplet=x64-windows --x-buildtrees-root=F:/vcpkg/buildtrees
  • remove命令

    移除一個(gè)指定的安裝包,例如刪除已經(jīng)安裝好的gdal包使用如下命令:

    vcpkg remove gdal

    如果希望移除所有outdated的安裝包,可以使用以下命令:

    vcpkg remove --outdated

    有些時(shí)候,僅僅通過remove命令刪除已經(jīng)安裝好的軟件包會(huì)出現(xiàn)異常。例如可能出現(xiàn)刪除安裝包后,重新安裝包提示“已經(jīng)安裝”。如果我們需要徹底將包從installed目錄中移除,需要執(zhí)行以下流程

    • 從packages目錄中找到包對應(yīng)的目錄(注意區(qū)分版本),將整個(gè)目錄全部刪除;

    • 從buildtrees 目錄中找到包對應(yīng)的目錄,將整個(gè)目錄全部刪除;

    • 進(jìn)入installed\vcpkg\info目錄,查找包對應(yīng)的listlistlist文件。listlistlist文件中記錄了包生成后的lib、dll、pdb、include頭文件和其他輔助文件,手動(dòng)刪除這些文件,最后刪除listlistlist文件本身;

    • 進(jìn)入installed\vcpkg目錄,打開statusstatusstatus文件,搜索包,將包相關(guān)內(nèi)容手動(dòng)刪除。

  • list命令

    列表所有已經(jīng)安裝的軟件包,也可以指定名以列出按照的某一具體軟件包

    vcpkg list # list all installed packagesvcpkg list gdal # list installed gdal

    通過listlistlist命令可以方便地查詢某個(gè)安裝包是否安裝以及對應(yīng)的安裝版本:

  • search命令

    搜索vcpkg支持的安裝包:

    vcpkg search gdal

    當(dāng)需要查看安裝包附帶哪些三方庫支持時(shí),使用searchsearchsearch命令也很方便:

  • depend-info命令

    搜索安裝包的依賴,如果安裝時(shí)指定了第三方庫的支持,搜索依賴時(shí)也需要指定軟件包具有哪些三方庫特性。例如,搜索一個(gè)帶Qt、Cuda支持的OpenCV庫依賴哪些包,可以使用以下命令:

    vcpkg depend-info opencv[qt,cuda]

**如果希望知道哪些軟件包依賴包,目前vcpkg沒有命令直接支持這一功能。**可以打開statusstatusstatus文件,進(jìn)行檢索判斷。例如如果想知道哪些包依賴hdf5庫,在statusstatusstatus文件中搜索hdf5,所有depends一欄有hdf5列出的包都依賴hdf5庫,例如OpenCV:

  • x-history命令

    查詢vcpkg中軟件包的更新記錄,需要注意的是,vcpkg引入一個(gè)包的端口更新時(shí)需要兼容所有依賴它的其他端口,以保證兼容性。因此,vcpkg支持的軟件包的更新記錄和的官方更新記錄并不一定同步

    當(dāng)需要安裝一個(gè)特定版本的包(非vcpkg查詢到的最新版),可以使用x-history命令獲取的更新記錄,并借助git reset命令獲取對應(yīng)記錄的端口信息,此時(shí)可以構(gòu)建一個(gè)特定版本的包。

    以Boost庫為例,使用x-history命令查詢可知,目前vcpkg支持構(gòu)建的Boost庫最新版為1.75.0版:

    vcpkg x-history boost

    如果我們希望構(gòu)建Boost 1.74.0 版本,通過查詢可知,1.74.0版的提交記錄為:7944ed328a10833c4a6b3ab3ff94,使用git回退到指定版本(工作區(qū)也回退到對應(yīng)commit的狀態(tài)),然后重新構(gòu)建。整個(gè)過程的命令如下:

    vcpkg x-history boost # get boost_1.74.0 commit id: 7944ed328a10833c4a6git reset --hard 7944ed328a10833c4a6vcpkg install boost

    需要注意的是,git reset --hard 7944ed328a10833c4a6命令會(huì)將vcpkg支持的所有安裝包對應(yīng)的端口描述回退到commit 7944ed328a10833c4a6的狀態(tài)。而通常情況下,我們并不希望其他已經(jīng)安裝的軟件包受到回退的影響,我們可以采用不同目錄下的vcpkg解決這個(gè)問題!由于vcpkg并不會(huì)將信息記錄到當(dāng)前工作目錄以外的區(qū)域(如注冊表),我們可以將vcpkg拷貝到不同文件夾實(shí)現(xiàn)不同版本的區(qū)分。例如我采用F:/vcpkg/vcpkg作為與官方同步的vcpkg版,保持與Microsoft Vcpkg小組的同步更新,同時(shí)采用F:/vcpkg/vcpkg-bak作為本地需要構(gòu)建特殊版本安裝包的備用版。因此,我會(huì)在F:/vcpkg/vcpkg-bak目錄下運(yùn)行g(shù)it reset --hard 7944ed328a10833c4a6命令。

    當(dāng)構(gòu)建完成Boost 1.74.0 版,如果希望vcpkg的端口描述文件恢復(fù)到官方最新的維護(hù)狀態(tài),可以使用git pull命令。運(yùn)行此命令不會(huì)改變本地以及構(gòu)建好的編譯結(jié)果

  • export命令

    導(dǎo)出指定安裝包,可以指定安裝包的導(dǎo)出方式(如raw、nuget、zip、7zip等等),例如以zip壓縮包導(dǎo)出gdal安裝包可以運(yùn)行以下命令:

    vcpkg export gdal --zip

    運(yùn)行完成后,會(huì)在vcpkg目錄下以運(yùn)行時(shí)間生成一個(gè)zip壓縮包。zip包內(nèi)的目錄結(jié)構(gòu)如下:

    • installed - 包含導(dǎo)出安裝包的頭文件和二進(jìn)制文件(lib、pdb、dll等)。
    • scripts - 由 vcpkg 使用的腳本(CMake、PowerShell)

在下一節(jié)會(huì)介紹如何使用vcpkg生成的腳本文件配合CMake完成工程的構(gòu)建。
當(dāng)我們擁有多個(gè)版本的vcpkg,同時(shí)希望將不同版本vcpkg編譯的二進(jìn)制軟件包合并在一個(gè)installed目錄,我們也可以將制定的安裝包通過命令export導(dǎo)出,然后將導(dǎo)出包中installed目錄下的構(gòu)建平臺(tái)文件夾與目的installed目錄下的平臺(tái)文件夾直接合并(例如x64-windows文件夾)。installed\vcpkg\info目錄也可以直接合并,而對于installed\vcpkg目錄下的statusstatusstatus文件,需要手動(dòng)進(jìn)行合并。

  • update命令

    可以查詢已經(jīng)安裝的軟件包中哪些包可以更新,將查詢信息輸出至upinfo.txt文件的命令如下:

    vcpkg update > upinfo.txt

    upinfo.txt文件中記錄的查詢結(jié)果如下:

    Using local portfile versions. To update the local portfiles, use git pull.
    The following packages differ from their port versions:
    boost:x64-windows 1.74.0 -> 1.75.0
    boost-accumulators:x64-windows 1.74.0 -> 1.75.0
    boost-algorithm:x64-windows 1.74.0 -> 1.75.0
    boost-align:x64-windows 1.74.0 -> 1.75.0
    boost-any:x64-windows 1.74.0 -> 1.75.0
    boost-array:x64-windows 1.74.0 -> 1.75.0
    boost-asio:x64-windows 1.74.0 -> 1.75.0#1
    boost-assert:x64-windows 1.74.0 -> 1.75.0
    boost-assign:x64-windows 1.74.0 -> 1.75.0
    boost-atomic:x64-windows 1.74.0 -> 1.75.0
    boost-beast:x64-windows 1.74.0 -> 1.75.0
    boost-bimap:x64-windows 1.74.0 -> 1.75.0
    boost-bind:x64-windows 1.74.0 -> 1.75.0
    boost-build:x64-windows 1.74.0 -> 1.75.0.beta1#1
    boost-callable-traits:x64-windows 1.74.0 -> 1.75.0
    boost-chrono:x64-windows 1.74.0 -> 1.75.0
    boost-circular-buffer:x64-windows 1.74.0 -> 1.75.0
    boost-compatibility:x64-windows 1.74.0 -> 1.75.0
    boost-compute:x64-windows 1.74.0 -> 1.75.0
    boost-concept-check:x64-windows 1.74.0 -> 1.75.0
    boost-config:x64-windows 1.74.0 -> 1.75.0
    boost-container:x64-windows 1.74.0 -> 1.75.0
    boost-container-hash:x64-windows 1.74.0 -> 1.75.0
    boost-context:x64-windows 1.74.0 -> 1.75.0
    boost-contract:x64-windows 1.74.0 -> 1.75.0
    boost-conversion:x64-windows 1.74.0 -> 1.75.0
    boost-convert:x64-windows 1.74.0 -> 1.75.0
    boost-core:x64-windows 1.74.0 -> 1.75.0
    boost-coroutine:x64-windows 1.74.0 -> 1.75.0
    boost-coroutine2:x64-windows 1.74.0 -> 1.75.0
    boost-crc:x64-windows 1.74.0 -> 1.75.0
    boost-date-time:x64-windows 1.74.0 -> 1.75.0
    boost-detail:x64-windows 1.74.0 -> 1.75.0
    boost-dll:x64-windows 1.74.0 -> 1.75.0
    boost-dynamic-bitset:x64-windows 1.74.0 -> 1.75.0
    boost-endian:x64-windows 1.74.0 -> 1.75.0
    boost-exception:x64-windows 1.74.0 -> 1.75.0
    boost-fiber:x64-windows 1.74.0 -> 1.75.0
    boost-filesystem:x64-windows 1.74.0 -> 1.75.0
    boost-flyweight:x64-windows 1.74.0 -> 1.75.0
    boost-foreach:x64-windows 1.74.0 -> 1.75.0
    boost-format:x64-windows 1.74.0 -> 1.75.0
    boost-function:x64-windows 1.74.0 -> 1.75.0
    boost-function-types:x64-windows 1.74.0 -> 1.75.0
    boost-functional:x64-windows 1.74.0 -> 1.75.0
    boost-fusion:x64-windows 1.74.0 -> 1.75.0
    boost-geometry:x64-windows 1.74.0 -> 1.75.0
    boost-gil:x64-windows 1.74.0 -> 1.75.0
    boost-graph:x64-windows 1.74.0 -> 1.75.0
    boost-graph-parallel:x64-windows 1.74.0 -> 1.75.0
    boost-hana:x64-windows 1.74.0 -> 1.75.0
    boost-heap:x64-windows 1.74.0 -> 1.75.0
    boost-histogram:x64-windows 1.74.0 -> 1.75.0
    boost-hof:x64-windows 1.74.0 -> 1.75.0
    boost-icl:x64-windows 1.74.0 -> 1.75.0
    boost-integer:x64-windows 1.74.0 -> 1.75.0
    boost-interprocess:x64-windows 1.74.0 -> 1.75.0
    boost-interval:x64-windows 1.74.0 -> 1.75.0
    boost-intrusive:x64-windows 1.74.0 -> 1.75.0
    boost-io:x64-windows 1.74.0 -> 1.75.0
    boost-iostreams:x64-windows 1.74.0 -> 1.75.0
    boost-iterator:x64-windows 1.74.0 -> 1.75.0
    boost-lambda:x64-windows 1.74.0 -> 1.75.0
    boost-lexical-cast:x64-windows 1.74.0 -> 1.75.0
    boost-local-function:x64-windows 1.74.0 -> 1.75.0
    boost-locale:x64-windows 1.74.0#3 -> 1.75.0
    boost-lockfree:x64-windows 1.74.0 -> 1.75.0
    boost-log:x64-windows 1.74.0 -> 1.75.0
    boost-logic:x64-windows 1.74.0 -> 1.75.0
    boost-math:x64-windows 1.74.0 -> 1.75.0
    boost-metaparse:x64-windows 1.74.0 -> 1.75.0
    boost-modular-build-helper:x64-windows 1.74.0#2 -> 1.75.0#4
    boost-move:x64-windows 1.74.0 -> 1.75.0
    boost-mp11:x64-windows 1.74.0 -> 1.75.0
    boost-mpi:x64-windows 1.74.0 -> 1.75.0
    boost-mpl:x64-windows 1.74.0 -> 1.75.0
    boost-msm:x64-windows 1.74.0 -> 1.75.0
    boost-multi-array:x64-windows 1.74.0 -> 1.75.0
    boost-multi-index:x64-windows 1.74.0 -> 1.75.0
    boost-multiprecision:x64-windows 1.74.0 -> 1.75.0
    boost-nowide:x64-windows 1.74.0 -> 1.75.0
    boost-numeric-conversion:x64-windows 1.74.0 -> 1.75.0
    boost-odeint:x64-windows 1.74.0 -> 1.75.0
    boost-optional:x64-windows 1.74.0 -> 1.75.0
    boost-outcome:x64-windows 1.74.0 -> 1.75.0
    boost-parameter:x64-windows 1.74.0 -> 1.75.0
    boost-parameter-python:x64-windows 1.74.0 -> 1.75.0
    boost-phoenix:x64-windows 1.74.0 -> 1.75.0
    boost-poly-collection:x64-windows 1.74.0 -> 1.75.0
    boost-polygon:x64-windows 1.74.0 -> 1.75.0
    boost-pool:x64-windows 1.74.0 -> 1.75.0
    boost-predef:x64-windows 1.74.0 -> 1.75.0
    boost-preprocessor:x64-windows 1.74.0 -> 1.75.0
    boost-process:x64-windows 1.74.0 -> 1.75.0
    boost-program-options:x64-windows 1.74.0 -> 1.75.0
    boost-property-map:x64-windows 1.74.0 -> 1.75.0
    boost-property-tree:x64-windows 1.74.0 -> 1.75.0
    boost-proto:x64-windows 1.74.0 -> 1.75.0
    boost-ptr-container:x64-windows 1.74.0 -> 1.75.0
    boost-python:x64-windows 1.74.0 -> 1.75.0#1
    boost-qvm:x64-windows 1.74.0 -> 1.75.0
    boost-random:x64-windows 1.74.0 -> 1.75.0
    boost-range:x64-windows 1.74.0 -> 1.75.0
    boost-ratio:x64-windows 1.74.0 -> 1.75.0
    boost-rational:x64-windows 1.74.0 -> 1.75.0
    boost-regex:x64-windows 1.74.0 -> 1.75.0
    boost-safe-numerics:x64-windows 1.74.0 -> 1.75.0
    boost-scope-exit:x64-windows 1.74.0 -> 1.75.0
    boost-serialization:x64-windows 1.74.0 -> 1.75.0
    boost-signals2:x64-windows 1.74.0 -> 1.75.0
    boost-smart-ptr:x64-windows 1.74.0 -> 1.75.0
    boost-sort:x64-windows 1.74.0 -> 1.75.0
    boost-spirit:x64-windows 1.74.0 -> 1.75.0
    boost-stacktrace:x64-windows 1.74.0 -> 1.75.0
    boost-statechart:x64-windows 1.74.0 -> 1.75.0
    boost-static-assert:x64-windows 1.74.0 -> 1.75.0
    boost-static-string:x64-windows 1.74.0 -> 1.75.0
    boost-stl-interfaces:x64-windows 1.74.0 -> 1.75.0
    boost-system:x64-windows 1.74.0 -> 1.75.0
    boost-test:x64-windows 1.74.0 -> 1.75.0
    boost-thread:x64-windows 1.74.0 -> 1.75.0
    boost-throw-exception:x64-windows 1.74.0 -> 1.75.0
    boost-timer:x64-windows 1.74.0 -> 1.75.0
    boost-tokenizer:x64-windows 1.74.0 -> 1.75.0
    boost-tti:x64-windows 1.74.0 -> 1.75.0
    boost-tuple:x64-windows 1.74.0 -> 1.75.0
    boost-type-erasure:x64-windows 1.74.0 -> 1.75.0
    boost-type-index:x64-windows 1.74.0 -> 1.75.0
    boost-type-traits:x64-windows 1.74.0 -> 1.75.0
    boost-typeof:x64-windows 1.74.0 -> 1.75.0
    boost-ublas:x64-windows 1.74.0 -> 1.75.0
    boost-uninstall:x64-windows 1.74.0 -> 1.75.0
    boost-units:x64-windows 1.74.0 -> 1.75.0
    boost-unordered:x64-windows 1.74.0 -> 1.75.0
    boost-utility:x64-windows 1.74.0 -> 1.75.0
    boost-uuid:x64-windows 1.74.0 -> 1.75.0
    boost-variant:x64-windows 1.74.0 -> 1.75.0
    boost-variant2:x64-windows 1.74.0 -> 1.75.0
    boost-vmd:x64-windows 1.74.0 -> 1.75.0
    boost-wave:x64-windows 1.74.0 -> 1.75.0
    boost-winapi:x64-windows 1.74.0 -> 1.75.0
    boost-xpressive:x64-windows 1.74.0 -> 1.75.0
    boost-yap:x64-windows 1.74.0 -> 1.75.0
    pcl:x64-windows 1.11.1#1 -> 1.11.1#2

    To update these packages and all dependencies, run
    .\vcpkg upgrade

    To only remove outdated packages, run
    .\vcpkg remove --outdated

    說明本地安裝的軟件包中Boost庫可以升級到1.75.0版,pcl庫可以升級到1.11.1#2版,其他已經(jīng)安裝的軟件包均為vcpkg支持的最新版。

  • upgrade命令
    如果希望直接重建所有可升級的安裝包,可以用以下方式運(yùn)行命令:

    vcpkg upgrade --no-dry-run
  • integrate命令
    將vcpkg構(gòu)建的安裝包與Vistual Stuido集成:當(dāng)需要設(shè)置為所有項(xiàng)目均可使用vcpkg構(gòu)建的安裝包時(shí),可以使用vcpkg integrate install命令;當(dāng)需要解除與Visual Studio的集成時(shí),可以使用vcpkg integrate remove命令;當(dāng)需要與某一具體工程集成時(shí),可以使用vcpkg integrate project命令生成一個(gè)參考包配合nuget與單一工程集成。

    相關(guān)集成的方法將在下一小節(jié)具體介紹。

2.6 安裝包與Visual Studio集成

  • 全局集成
    vcpkg可以自動(dòng)為VS工程適配目錄,開發(fā)者并不需要關(guān)心已安裝的庫的目錄在哪里,也不需要設(shè)置庫目錄和引用目錄就能自由地使用。使用以下命令可以完成全局集成:

    vcpkg integrate install

    我們新建一個(gè)hello-world工程測試下全局集成的效果,建立好hello-world工程后,可以在工程屬性選項(xiàng)中看到vcpkg的選項(xiàng)卡:

    可以在選項(xiàng)卡中進(jìn)行vcpkg的相關(guān)設(shè)置,簡單為hello-world工程引入OpenCV庫,只需要包含好相應(yīng)的頭文件就可以正常調(diào)用OpenCV的相關(guān)函數(shù):

    #include <iostream> #include <opencv2/imgcodecs.hpp> #include <opencv2/highgui.hpp>int main() {const std::string imgFile = "F:/TestData/Imagery/image_small.tif";auto imgMat = cv::imread(imgFile, cv::IMREAD_GRAYSCALE);cv::namedWindow("image_small", cv::WINDOW_NORMAL);cv::imshow("image_small", imgMat);cv::waitKey(0);return 0; }

    可以看到工程正常編譯沒有任何報(bào)錯(cuò)信息,并且編譯后的執(zhí)行程序可以正常運(yùn)行:

    進(jìn)入二進(jìn)制文件生成文件夾,可以看到vcpkg自動(dòng)將hello-world.exe依賴的庫拷貝到生成目錄了!

    如果希望去掉vcpkg的全局集成可以使用以下命令:

    vcpkg integrate remove
  • 集成到單一工程
    使用以下命令生成nuget配置文件:

    vcpkg integrate project

    運(yùn)行完成后會(huì)有如下提示:

    F:\vcpkg\vcpkg>vcpkg integrate project
    Created nupkg: F:\vcpkg\vcpkg\scripts\buildsystems\vcpkg.F.vcpkg.vcpkg.1.0.0.nupkg

    With a project open, go to Tools->NuGet Package Manager->Package Manager Console and paste:
    Install-Package vcpkg.F.vcpkg.vcpkg -Source “F:\vcpkg\vcpkg\scripts\buildsystems”

    此時(shí)需要配合nuget包管理工具完成工程設(shè)置。在Viusal Studio中點(diǎn)擊工具→Nuget包管理器→程序包管理器設(shè)置,在打開的選項(xiàng)卡中完成如下設(shè)置:

    設(shè)置完成后點(diǎn)擊工具→Nuget包管理器→管理解決方案的NuGet程序包,在打開的選項(xiàng)卡中完成如下設(shè)置:

    安裝完成后,hello-world工程即可以正常編譯!

  • 與CMake集成使用

    除開以上方式直接與Visual Studio集成使用,vpckg還提供了腳本可以直接與CMake、Powershell等工具集成使用構(gòu)建工程。這里簡單介紹下如何與CMake集成使用。

    在CMake申明創(chuàng)建第一個(gè)project前,加上以下定義:

    set(VCPKG_ROOT "F:/vcpkg/vcpkg") SET(CMAKE_TOOLCHAIN_FILE "${VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake") if(DEFINED ENV{VCPKG_DEFAULT_TRIPLET} AND NOT DEFINED VCPKG_TARGET_TRIPLET)set(VCPKG_TARGET_TRIPLET "$ENV{VCPKG_DEFAULT_TRIPLET}" CACHE STRING "") endif() set(VCPKG_3RD_PARTY_ROOT "${VCPKG_ROOT}/installed/${VCPKG_TARGET_TRIPLET}") set(VCPKG_3RD_PARTY_INCLUDE "${VCPKG_3RD_PARTY_ROOT}/include")

    即指明CMAKE_TOOLCHAIN_FILE的路徑和軟件包的編譯三元組(需要從環(huán)境變量中讀取相應(yīng)的值),此時(shí)可以定義vcpkg編譯的三方庫應(yīng)用目錄為VCPKG_3RD_PARTY_INCLUDE。

    在為目標(biāo)工程引入三方庫前,需要使用find_package{find\_package}find_package命令和include_directories{include\_directories}include_directories命令(或target_include_directories{target\_include\_directories}target_include_directories命令):

    #找到OpenCV軟件包 find_package(OpenCV REQUIRED) #為所有子工程增加附加引用目錄 ${VCPKG_3RD_PARTY_INCLUDE} include_directories(${VCPKG_3RD_PARTY_INCLUDE})add_executable(${proj_name} ${RCS}) #為工程${proj_name}鏈接OpenCV的libs target_link_libraries(${proj_name} PRIVATE ${OpenCV_LIBS}) #為工程${proj_name}增加附加引用目錄 ${VCPKG_3RD_PARTY_INCLUDE} target_include_directories(${proj_name} PRIVATE ${VIS_INCLUDES})

    需要注意的是,CMake對不同的三方軟件包提供的查找方式、設(shè)置引用目錄方式和鏈接庫方式?jīng)]有固定模板,我們將在下一章介紹常見的第三方軟件包的CMake配置方式。

3. 常見的C++庫的CMake配置方式

CMake對不同的三方軟件包提供的查找方式、設(shè)置引用目錄方式和鏈接庫方式?jīng)]有固定模板,這里我們介紹了部分常見第三方軟件包的CMake配置方式。由于時(shí)間原因,并不是所有的配置信息都完成了測試,設(shè)置僅做參考,可能會(huì)因?yàn)閷?shí)際情況做變更與調(diào)整

3.1 Boost

Boost庫是一個(gè)可移植、提供源代碼的C++庫,作為標(biāo)準(zhǔn)庫的后備,是C++標(biāo)準(zhǔn)化進(jìn)程的開發(fā)引擎之一,是為C++語言標(biāo)準(zhǔn)庫提供擴(kuò)展的一些C++程序庫的總稱。

官方網(wǎng)站:https://www.boost.org/

set(Boost_USE_STATIC_LIBS OFF) set(Boost_USE_MULTITHREADED ON) set(Boost_USE_STATIC_RUNTIME OFF) #只申明需要的組件 find_package(Boost 1.74.0 REQUIRED COMPONENTS filesystem date_time iostreams program_options python39 locale) target_link_libraries(${proj_name} PRIVATE ${Boost_LIBRARIES})

3.2 cereal

cereal是一個(gè)只包含頭文件的C++ 11序列化庫。cereal接受任意數(shù)據(jù)類型,并可逆地將它們轉(zhuǎn)換為不同的表示形式,如緊湊二進(jìn)制編碼、XML或JSON。cereal被設(shè)計(jì)成快速、輕量級、易于擴(kuò)展——它沒有外部依賴,可以很容易地與其他代碼綁定或獨(dú)立使用。

官方網(wǎng)站:https://uscilab.github.io/cereal/

find_package(cereal CONFIG REQUIRED) #以下鏈接方式未作測試 target_link_libraries(${proj_name} PRIVATE cereal)

3.3 Ceres Solver

Ceres Solver是一個(gè)開源c++庫,用于建模和解決大型、復(fù)雜的優(yōu)化問題。它可用于求解非線性有界約束最小二乘問題和一般無約束優(yōu)化問題。

官方網(wǎng)站:http://ceres-solver.org/index.html

find_package(Ceres CONFIG REQUIRED) target_link_libraries(${proj_name} PRIVATE ceres Ceres::ceres)

3.4 CGAL

CGAL(The Computational Geometry Algorithms Library)以C++庫的形式提供了方便的訪問高效可靠的幾何算法。CGAL用于需要幾何計(jì)算的各個(gè)領(lǐng)域,如地理信息系統(tǒng)、計(jì)算機(jī)輔助設(shè)計(jì)、分子生物學(xué)、醫(yī)學(xué)成像、計(jì)算機(jī)圖形學(xué)和機(jī)器人技術(shù)。

CGAL庫提供了豐富的數(shù)據(jù)結(jié)構(gòu)和算法,如三角剖分,Voronoi圖,布爾操作的多邊形和多面體,點(diǎn)集處理,安排曲線,曲面和體積網(wǎng)格生成,幾何處理,阿爾法形狀,凸殼算法,形狀重建,AABB和KD樹…

官方網(wǎng)站:https://www.cgal.org/

find_package(CGAL CONFIG REQUIRED) #以下鏈接方式未作測試 target_link_libraries(${proj_name} PRIVATE CGAL::CGAL)

3.5 FLANN

FLANN是一個(gè)用于在高維空間中執(zhí)行快速近似最近鄰搜索的庫。它包含了一組我們發(fā)現(xiàn)最適合最近鄰搜索的算法,以及一個(gè)根據(jù)數(shù)據(jù)集自動(dòng)選擇最佳算法和最優(yōu)參數(shù)的系統(tǒng)。

官方網(wǎng)站:https://github.com/mariusmuja/flann

find_package(flann CONFIG REQUIRED) #以下鏈接方式未作測試 target_link_libraries(${proj_name} PRIVATE flann::flann flann::flann_cpp)

3.6 GDAL

GDAL(Geospatial Data Abstraction Library)是一個(gè)在X/MIT許可協(xié)議下的開源柵格空間數(shù)據(jù)轉(zhuǎn)換庫。它利用抽象數(shù)據(jù)模型來表達(dá)所支持的各種文件格式。它還有一系列命令行工具來進(jìn)行數(shù)據(jù)轉(zhuǎn)換和處理。OGR是GDAL項(xiàng)目的一個(gè)分支,功能與GDAL類似,只不過它提供對矢量數(shù)據(jù)的支持。

官方網(wǎng)站:https://gdal.org/

find_package(GDAL REQUIRED) target_include_directories(${proj_name} PRIVATE ${GDAL_INCLUDE_DIRS}) target_link_libraries(${proj_name} PRIVATE ${GDAL_LIBRARIES})

3.7 GLEW

OpenGL Extension Wrangler Library (GLEW)是一個(gè)跨平臺(tái)的開源C/ C++擴(kuò)展加載庫。GLEW提供了高效的運(yùn)行時(shí)機(jī)制來確定目標(biāo)平臺(tái)支持哪些OpenGL擴(kuò)展。OpenGL的核心和擴(kuò)展功能在一個(gè)頭文件中公開。GLEW已經(jīng)在各種操作系統(tǒng)上進(jìn)行了測試,包括Windows、Linux、Mac OS X、FreeBSD、Irix和Solaris。

官方網(wǎng)站:http://glew.sourceforge.net/

find_package(GLEW REQUIRED) #以下鏈接方式未作測試 target_link_libraries(${proj_name} PRIVATE GLEW::GLEW)

3.8 GMP

GMP是一個(gè)用于任意精度算法的免費(fèi)庫,可操作有符號整數(shù)、有理數(shù)和浮點(diǎn)數(shù)。除了運(yùn)行GMP的機(jī)器中的可用內(nèi)存所暗示的精度之外,對精度沒有實(shí)際限制。GMP具有豐富的功能集,各功能具有規(guī)范的接口。GMP的主要目標(biāo)應(yīng)用是密碼學(xué)應(yīng)用與研究、互聯(lián)網(wǎng)安全應(yīng)用、代數(shù)系統(tǒng)、計(jì)算代數(shù)研究等。

官方網(wǎng)站:https://gmplib.org/

find_package(GMP REQUIRED) #以下鏈接方式未作測試 target_link_libraries(${proj_name} gmp libgmp)

3.9 GTest

GTest(googletest)是測試技術(shù)團(tuán)隊(duì)根據(jù)谷歌的具體要求和限制開發(fā)的測試框架。googletest跨平臺(tái)地支持任意類型的C++開發(fā)相關(guān)測試,不僅僅是單元測試…

官方網(wǎng)站:https://github.com/google/googletest

find_package(GTest REQUIRED) target_link_libraries(${proj_name} PRIVATE GTest::gmock GTest::gtest GTest::gmock_main GTest::gtest_main) #也有以下方式鏈接庫${GTEST_LIBRARIES} #target_link_libraries(${proj_name} PRIVATE ${GTEST_LIBRARIES})

3.10 GSL

GNU科學(xué)庫(GSL)是一個(gè)面向C和c++程序員的數(shù)字庫。它是GNU通用公共許可證下的自由軟件。該庫提供了廣泛的數(shù)學(xué)例程,如隨機(jī)數(shù)生成器,特殊函數(shù)和最小二乘擬合。總共有超過1000個(gè)函數(shù)和一個(gè)廣泛的測試套件。

官方網(wǎng)站:https://www.gnu.org/software/gsl/

find_package(GSL REQUIRED) #以下鏈接方式未作測試 target_link_libraries(${proj_name} PRIVATE GSL::gsl GSL::gslcblas)

3.11 HDF5

HDF(High-performance data management and storage suite)是美國國家高級計(jì)算應(yīng)用中心(National Center for Supercomputing Application,NCSA)為了滿足各種領(lǐng)域研究需求而研制的一種能高效存儲(chǔ)和分發(fā)科學(xué)數(shù)據(jù)的新型數(shù)據(jù)格式 。HDF5是為快速I/O處理和存儲(chǔ)而構(gòu)建的。

官方網(wǎng)站:https://www.hdfgroup.org/solutions/hdf5/

find_package(hdf5 CONFIG REQUIRED) #以下鏈接方式未作測試 target_link_libraries(${proj_name} PRIVATE hdf5::hdf5-shared hdf5::hdf5_hl-shared)

3.12 Lastools/Laslib

LASlib(帶有LASzip)是一個(gè)用于讀寫激光雷達(dá)的C++編程API。

官方網(wǎng)站:https://github.com/LAStools/LAStools

#以下鏈接方式似乎有問題,無法正確鏈接 find_package(laslib CONFIG REQUIRED) target_link_libraries(${proj_name} PRIVATE LASlib) #手動(dòng)link lib文件 set(LASLIB_INCLUDE_DIR "${VCPKG_3RD_PARTY_INCLUDE}/LASlib") set(LASLIB_LIBRARY debug "${VCPKG_3RD_PARTY_ROOT}/debug/lib/LASlib.lib"optimized "${VCPKG_3RD_PARTY_ROOT}/lib/LASlib.lib") target_link_libraries(${proj_name} PRIVATE ${LASLIB_LIBRARY})

3.13 OpenCV

OpenCV是一個(gè)基于BSD許可(開源)發(fā)行的跨平臺(tái)計(jì)算機(jī)視覺和機(jī)器學(xué)習(xí)軟件庫,可以運(yùn)行在Linux、Windows、Android和Mac OS操作系統(tǒng)上。 它輕量級而且高效——由一系列 C 函數(shù)和少量 C++ 類構(gòu)成,同時(shí)提供了Python、Ruby、MATLAB等語言的接口,實(shí)現(xiàn)了圖像處理和計(jì)算機(jī)視覺方面的很多通用算法。
OpenCV用C++語言編寫,它具有C ++,Python,Java和MATLAB接口,并支持Windows,Linux,Android和Mac OS,OpenCV主要傾向于實(shí)時(shí)視覺應(yīng)用,并在可用時(shí)利用MMX和SSE指令, 如今也提供對于C#、Ch、Ruby,GO的支持。

官方網(wǎng)站:https://opencv.org/

find_package(OpenCV REQUIRED) target_link_libraries(${proj_name} PRIVATE ${OpenCV_LIBS})

3.14 OpenNI2

OpenNI(開放自然交互)是一個(gè)多語言,跨平臺(tái)的框架,它定義了編寫應(yīng)用程序,并利用其自然交互的API。OpenNI API由一組可用來編寫通用自然交互應(yīng)用的接口組成。OpenNI的主要目的是要形成一個(gè)標(biāo)準(zhǔn)的API,來搭建視覺和音頻傳感器與視覺和音頻感知中間件通信的橋梁。

官方網(wǎng)站:https://structure.io/openni

# openni2庫的配置全部未測試 set(OPENNI2_FOUND TRUE) # auto set(OPENNI2_VERSION 1.0.0) set(OPENNI2_ROOT_DIR "C:/car_libs/OpenNI2")find_path(OPENNI2_INCLUDE_DIR NAMES OpenNI.h PATHS "${OPENNI2_ROOT_DIR}/Include") mark_as_advanced(OPENNI2_INCLUDE_DIR) # show entry in cmake-guifind_library(OPENNI2_LIBRARY NAMES OpenNI2.lib PATHS "${OPENNI2_ROOT_DIR}/Lib") mark_as_advanced(OPENNI2_LIBRARY) # show entry in cmake-guiset(OPENNI2_INCLUDE_DIRS ${OPENNI2_INCLUDE_DIR} ) set(OPENNI2_LIBRARIES ${OPENNI2_LIBRARY} )

3.15 OSG

OpenSceneGraph是一個(gè)開源的高性能3D圖形工具包,用于可視化仿真、游戲、虛擬現(xiàn)實(shí)、科學(xué)可視化和建模等領(lǐng)域的應(yīng)用程序開發(fā)人員。它完全用標(biāo)準(zhǔn)c++和OpenGL編寫,可以在所有Windows平臺(tái)上運(yùn)行,包括OSX、GNU/Linux、IRIX、Solaris、HP-Ux、AIX和FreeBSD操作系統(tǒng)。OpenSceneGraph現(xiàn)已成為世界領(lǐng)先的場景圖技術(shù),廣泛應(yīng)用于可視化模擬、空間、科學(xué)、石油天然氣、游戲和虛擬現(xiàn)實(shí)行業(yè)。

官方網(wǎng)站:http://www.openscenegraph.org/

find_package(OpenSceneGraph 3.6.5 REQUIRED osgDB osgUtil) include_directories(${OPENSCENEGRAPH_INCLUDE_DIRS}) target_link_libraries(${proj_name} ${OPENSCENEGRAPH_LIBRARIES}

3.16 PDAL

PDAL是一個(gè)用于轉(zhuǎn)換和操作點(diǎn)云數(shù)據(jù)的C++ BSD庫。它非常像處理光柵和矢量數(shù)據(jù)的GDAL庫。除了庫代碼之外,PDAL還提供了一套命令行應(yīng)用程序,用戶可以方便地使用它們來處理、過濾、翻譯和查詢點(diǎn)云數(shù)據(jù)。

官方網(wǎng)站:https://pdal.io/

find_package(PDAL REQUIRED) #以下鏈接方式未作測試 target_link_libraries(${proj_name} PRIVATE pdalcpp pdal_util pdal_arbiter pdal_kazhdan)

3.17 PROJ

PROJ是一個(gè)通用的坐標(biāo)轉(zhuǎn)換軟件,它將地理空間坐標(biāo)從一個(gè)坐標(biāo)參考系統(tǒng)(CRS)轉(zhuǎn)換到另一個(gè)。這包括地圖投影和大地變換。PROJ包括命令行應(yīng)用程序,可以方便地從文本文件或直接從用戶輸入轉(zhuǎn)換坐標(biāo)。除了命令行實(shí)用程序之外,PROJ還公開了一個(gè)應(yīng)用程序編程接口,簡稱API。該API允許開發(fā)人員在自己的軟件中使用PROJ的功能,而不必自己實(shí)現(xiàn)類似的功能。

官方網(wǎng)站:https://proj.org/

find_package(proj4 CONFIG REQUIRED) #以下鏈接方式未作測試 target_link_libraries(${proj_name} PRIVATE PROJ::proj PROJ4::proj)

3.18 Pybind11庫

Pybind11是一個(gè)輕量級的頭文件庫,它在Python中公開c++類型,反之亦然,主要用于創(chuàng)建現(xiàn)有c++代碼的Python綁定。它的目標(biāo)和語法與優(yōu)秀的Boost相似,主要是用來在已有的 C++代碼的基礎(chǔ)上做擴(kuò)展,它的語法和目標(biāo)非常像Boost.Python,但Boost.Python為了兼容現(xiàn)有的基本所有的C++編譯器而變得非常復(fù)雜和龐大,而因此付出的代價(jià)是很多晦澀的模板技巧以及很多不必要的對舊版編譯器的支持。Pybind11摒棄了這些支持,它只支持python2.7以上以及C++ 11以上的編譯器,使得它比Boost.Python更加簡潔高效。

官方網(wǎng)站:https://github.com/pybind/pybind11

find_package(pybind11 CONFIG REQUIRED) #以下鏈接方式未作測試 target_link_libraries(${proj_name} PRIVATE mylib pybind11::lto pybind11::embed pybind11::module)

3.19 Range-v3

C++14/17/20的Range庫,是C++20的Range庫的基礎(chǔ)。

官方網(wǎng)站:https://ericniebler.github.io/range-v3/

find_package(range-v3 CONFIG REQUIRED) #以下鏈接方式未作測試 target_link_libraries(${proj_name} PRIVATE range-v3 range-v3-meta range-v3::meta range-v3-concepts)

3.20 SltBench

C++ benchmark工具

官方網(wǎng)站:https://github.com/ivafanas/sltbench

find_package(sltbench CONFIG REQUIRED) #以下鏈接方式未作測試 target_link_libraries(${proj_name} PRIVATE sltbench)

3.21 VTK

可視化工具包(VTK)是用于操作和顯示科學(xué)數(shù)據(jù)的開源軟件。它提供了最先進(jìn)的3D渲染工具,一套用于3D交互的小部件,以及廣泛的2D繪圖功能。

官方網(wǎng)站:https://vtk.org/

# vcpkg給的例子,鏈接方式未作測試,不一定對 find_package(3.13 CONFIG REQUIRED) target_link_libraries(${proj_name} PRIVATE ZLIB::ZLIB)find_package(3.16 CONFIG REQUIRED) target_link_libraries(${proj_name} PRIVATE PostgreSQL::PostgreSQL)find_package(99 CONFIG REQUIRED) target_link_libraries(${proj_name} PRIVATE X11::SM X11::Xi X11::Xt X11::Xv)find_package(vtk CONFIG REQUIRED) target_link_libraries(${proj_name} PRIVATE LZ4::LZ4 OGG::OGG VTK::lz4 VTK::mpi)

4. vcpkg常見的錯(cuò)誤解決

vcpkg編譯第三方軟件包時(shí)可能出現(xiàn)各種錯(cuò)誤導(dǎo)致編譯失敗,這里列舉了一些使用vcpkg安裝軟件包時(shí)可能發(fā)生的錯(cuò)誤及解決辦法。

4.1 未安裝VS英文語言包

在Windows中文版操作系統(tǒng)下,Visual Studio可能默認(rèn)安裝為中文版,并不帶英文語言包。如果Viusal Studio沒有應(yīng)用英文語言包,很多三方庫很容易編譯失敗,因此首先需要給Visual Studio安裝英文語言包。

運(yùn)行Visual Studio Installer,在對應(yīng)版本的Viusal Studio選項(xiàng)卡右方點(diǎn)擊修改按鈕,在彈出的新對話框中點(diǎn)擊語言包選項(xiàng)卡,勾選英語語言包并安裝。

4.2 未關(guān)閉防病毒軟件

vcpkg在編譯某些軟件包時(shí)會(huì)調(diào)用Microsoft Windows軟件開發(fā)工具包中的Mt.exe生成簽名文件和目錄,這一行為通常會(huì)被一些防病毒軟件誤報(bào)為危險(xiǎn)操作而被防病毒軟件禁用,最終導(dǎo)致一些軟件包的安裝失敗!因此,為了保證獲取正確的安裝結(jié)果,在運(yùn)行vcpkg的全程內(nèi)請暫時(shí)禁用所有的防病毒軟件!

4.3 未正確下載軟件源

vcpkg支持的軟件包提供的官方源通常托管在github上或者是官方鏡像服務(wù)器上,這些服務(wù)器國內(nèi)訪問速度很慢,而且通過vcpkg下載源碼網(wǎng)絡(luò)很不穩(wěn)定。因?yàn)関cpkg并不支持?jǐn)帱c(diǎn)續(xù)傳,同時(shí)在安裝軟件包過程中下載的任何源文件,vcpkg都會(huì)默認(rèn)進(jìn)行文件哈希碼檢驗(yàn),在網(wǎng)絡(luò)不穩(wěn)定的情況下,很容易發(fā)生下載異常,到賬編譯失敗!

目前在沒有更好的解決辦法下,可以將控制臺(tái)界面中展現(xiàn)的vcpkg正在下載的文件超鏈接地址復(fù)制到其他下載器手動(dòng)下載,需要注意的是,vcpkg通常會(huì)將超鏈接中的文件重新命名(文件名通常不會(huì)保持一致)。因此,在我們手動(dòng)下載完軟件源后,還需要重命名文件。重命名后的文件名也可以在控制臺(tái)界面查看到,同時(shí)也可以在vcpkg下載某一軟件源時(shí),在vcpkg的downloads\temp文件夾內(nèi)找到重命名后的臨時(shí)文件,可以參考這個(gè)臨時(shí)文件將手動(dòng)下載好的軟件源重命名,然后復(fù)制到vcpkg的downloads文件夾。

4.4 常見C++庫編譯錯(cuò)誤的解決辦法

  • Boost
    Boost庫通常會(huì)被很多優(yōu)秀的開源C++庫依賴,因此建議使用vcpkg最先編譯Boost庫。截止到2021年2月8日,vcpkg最新支持的Boost庫為1.75.0版。1.75.0版Boost庫與CMake集成使用時(shí),目前CMake會(huì)彈出警告;同時(shí),目前測試最新版(1.11.1版)的pcl庫使用Boost 1.75.0版編譯會(huì)編譯失敗。因此,建議目前僅安裝Boost 1.74.0版

  • Qt5
    很多C++庫在安裝時(shí)也可以指定Qt的支持,因此建議也優(yōu)先使用vcpkg安裝Qt庫。截止到2021年2月8日,vcpkg最新支持的Qt庫為5.15.2版,經(jīng)測試,如果在安裝Qt5前,已經(jīng)安裝了protobuf庫,qt-webengine會(huì)編譯失敗。因此,如果qt-webengine無法正常編譯,可以先嘗試刪除protobuf。目前,qt-wayland會(huì)編譯失敗,考慮到我們的項(xiàng)目不需要這一特性,在編譯Qt5時(shí)去掉了wayland的支持。

  • GMP
    需要先安裝 yasm-tool:x86-windows

  • PCL
    暫不支持Boost 1.75.0版,用Boost 1.74.0版可以編譯通過

  • VTK

    • VTK8.x版本依賴PROJ6.X版本;

    • VTK指定libmysql支持時(shí),若已經(jīng)安裝libmariadb,則會(huì)因?yàn)閘ibmysql和libmariadb庫不兼容導(dǎo)致安裝失敗,可去掉二者其一;

    • VTK庫必須指定mpi支持;

    • OpenCV4.5.1版指定VTK支持時(shí),暫不支持VTK 9.0版。

  • OpenCV

    • 需要關(guān)閉防病毒軟件;

    • OpenCV4.5.1版指定VTK支持時(shí),暫不支持VTK 9.0版;

    • 編譯xfeature2d時(shí),可能因?yàn)閹讉€(gè)描述文件下載失敗而導(dǎo)致整體編譯失敗,可以參考前文手動(dòng)下載描述文件,或者通過以下方式下載:

      #!/bin/bash cd ./cache/xfeatures2d/ cd boostdesc curl https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_lbgm.i > 0ae0675534aa318d9668f2a179c2a052-boostdesc_lbgm.i curl https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_binboost_256.i > e6dcfa9f647779eb1ce446a8d759b6ea-boostdesc_binboost_256.i curl https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_binboost_128.i > 98ea99d399965c03d555cef3ea502a0b-boostdesc_binboost_128.i curl https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_binboost_064.i > 202e1b3e9fec871b04da31f7f016679f-boostdesc_binboost_064.i curl https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_bgm_hd.i > 324426a24fa56ad9c5b8e3e0b3e5303e-boostdesc_bgm_hd.i curl https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_bgm_bi.i > 232c966b13651bd0e46a1497b0852191-boostdesc_bgm_bi.i curl https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_bgm.i > 0ea90e7a8f3f7876d450e4149c97c74f-boostdesc_bgm.i cd ../vgg curl https://raw.githubusercontent.com/opencv/opencv_3rdparty/fccf7cd6a4b12079f73bbfb21745f9babcd4eb1d/vgg_generated_120.i > 151805e03568c9f490a5e3a872777b75-vgg_generated_120.i curl https://raw.githubusercontent.com/opencv/opencv_3rdparty/fccf7cd6a4b12079f73bbfb21745f9babcd4eb1d/vgg_generated_64.i > 7126a5d9a8884ebca5aea5d63d677225-vgg_generated_64.i curl https://raw.githubusercontent.com/opencv/opencv_3rdparty/fccf7cd6a4b12079f73bbfb21745f9babcd4eb1d/vgg_generated_48.i > e8d0dcd54d1bcfdc29203d011a797179-vgg_generated_48.i curl https://raw.githubusercontent.com/opencv/opencv_3rdparty/fccf7cd6a4b12079f73bbfb21745f9babcd4eb1d/vgg_generated_80.i > 7cd47228edec52b6d82f46511af325c5-vgg_generated_80.i

總結(jié)

以上是生活随笔為你收集整理的vcpkg快速入门手册的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

五月天九九 | 欧美a级片网站 | 不卡av在线 | 亚洲va欧美va人人爽春色影视 | 欧美一级在线观看视频 | 天天综合导航 | 欧美做受高潮1 | 中文字幕有码在线观看 | 久久国产视屏 | 成人丝袜 | 色婷婷久久久综合中文字幕 | 韩日电影在线 | 亚洲精品动漫久久久久 | 在线视频精品播放 | 国产一区自拍视频 | 国产三级香港三韩国三级 | 国产一区二区在线免费视频 | 黄av免费在线观看 | 午夜12点 | 中文字幕 第二区 | 亚洲人成免费 | 91精品国产91p65 | 久久福利精品 | 色综合久久久久久中文网 | 极品国产91在线网站 | 国产91综合一区在线观看 | 国产精品成人免费精品自在线观看 | 国产精品女人久久久久久 | 欧美精品亚州精品 | 性色在线视频 | 在线天堂中文在线资源网 | 美女视频黄免费的久久 | 99精品在线观看视频 | 国产精品密入口果冻 | 国产精品成人久久久久久久 | 麻豆免费视频 | 日日夜操 | 精品a视频 | 69精品久久久 | 在线成人免费电影 | 中文字幕亚洲在线观看 | 黄色avwww| 国产专区视频在线观看 | 美女网站在线观看 | 日韩精品一区二区三区在线播放 | 狠狠干天天射 | 特级aaa毛片 | 精品xxx| 日本精品视频在线播放 | 成人播放器 | 日韩在线大片 | 天堂视频中文在线 | 国产精品久久久久久久久久三级 | 久久五月婷婷丁香 | 国产黄色播放 | 97色资源| 一级黄色片网站 | 久久午夜电影网 | 2019中文在线观看 | 四虎影视国产精品免费久久 | 91av视屏| 色婷婷丁香 | 欧美在线一级片 | 日韩大陆欧美高清视频区 | 色网站免费在线观看 | 国产精品免费成人 | 西西4444www大胆无视频 | 国产精品麻豆一区二区三区 | 久久69精品久久久久久久电影好 | 午夜精品在线看 | 日韩一区视频在线 | 亚洲三级av | 在线看片一区 | 激情五月在线 | 黄色电影网站在线观看 | 91精品老司机久久一区啪 | 成人啪啪18免费游戏链接 | 色久天 | 欧美一二三区在线观看 | 西西4444www大胆视频 | 日韩一区正在播放 | 欧美精品免费在线观看 | 国产三级在线播放 | 超碰人人射 | 国产精品久久精品国产 | 97日日碰人人模人人澡分享吧 | av中文字幕亚洲 | 国产 日韩 在线 亚洲 字幕 中文 | 蜜桃视频日韩 | a级一a一级在线观看 | 精品字幕| 欧美一区二区在线 | www.久久免费 | 国产一级免费视频 | 欧美性极品xxxx做受 | 96精品在线 | 在线成人欧美 | 久久久久国产精品免费免费搜索 | 久久不卡国产精品一区二区 | 狠狠狠狠狠狠 | 国产精品99久久久久久有的能看 | 国产精品免费视频网站 | 色资源在线观看 | 国产亚洲精品美女久久 | 国产精品青草综合久久久久99 | 中文字幕黄色网址 | 粉嫩av一区二区三区免费 | 亚洲精品1234区 | 在线91播放 | 丁香婷婷激情国产高清秒播 | 久久久亚洲国产精品麻豆综合天堂 | 久久久香蕉视频 | 人人玩人人添人人 | 色播99 | 伊人婷婷综合 | 97电影院网| 日韩在线电影观看 | www.香蕉视频 | 在线观看视频一区二区三区 | 免费精品国产 | 美女福利视频在线 | 91视频在线观看免费 | 99久久夜色精品国产亚洲96 | av解说在线观看 | 天天干 夜夜操 | 粉嫩av一区二区三区入口 | 91精品久久久久久久久久久久久 | 精品国产伦一区二区三区免费 | 欧美夫妻性生活电影 | 在线观看mv的中文字幕网站 | 久久99这里只有精品 | 免费在线观看黄色网 | 久久综合色影院 | 久久人人爽爽人人爽人人片av | 99精品乱码国产在线观看 | 国产黄色免费在线观看 | 四虎影视成人永久免费观看亚洲欧美 | 麻豆成人精品 | 免费看的黄色片 | 天天干天天搞天天射 | 亚洲在线黄色 | 伊人天天 | av在线播放免费 | 亚洲一二区视频 | 日韩大片在线看 | 国产精品一区二区中文字幕 | 成人在线免费视频 | 中文字幕.av.在线 | 中国一级片免费看 | 中文字幕日韩一区二区三区不卡 | 久久免费国产精品 | 久亚洲| 91手机电影| 99爱精品视频 | 久久久在线免费观看 | 国产视频在线观看一区二区 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 国产一区二区高清视频 | 色婷婷激情五月 | 丁香婷婷激情五月 | 免费久久视频 | 久久久影院一区二区三区 | 高清不卡免费视频 | 亚洲国产精彩中文乱码av | www.人人草 | 欧美一级片在线 | 黄色一级大片在线免费看国产一 | 91视频在线国产 | 在线观看黄色 | 色网站视频| 日韩欧美在线综合网 | 国产在线最新 | 午夜视频久久久 | 狠狠色丁香婷婷 | 国产v在线播放 | 亚洲少妇自拍 | 亚洲精品一区二区三区在线观看 | 免费在线黄色av | 国内精品久久久久久久久久 | 中文字幕乱码日本亚洲一区二区 | 久久久人| 在线视频黄 | 人人看人人做人人澡 | 亚洲精品伦理在线 | 亚洲男人天堂a | 丁香5月婷婷久久 | 欧美最猛性xxx | 亚洲视频 中文字幕 | avav片 | 91免费日韩| 干 操 插 | 五月天婷亚洲天综合网鲁鲁鲁 | 欧美亚洲国产一卡 | 欧美激情第一页xxx 午夜性福利 | 亚洲韩国一区二区三区 | 99视频网址| 顶级bbw搡bbbb搡bbbb | 婷婷中文在线 | wwwav视频| 国产色一区 | 手机在线小视频 | 日韩免费av片 | 麻豆视频一区二区 | 一区二区三区免费 | 日韩精品首页 | 97超碰免费在线观看 | 婷婷丁香在线观看 | 国产午夜精品一区二区三区在线观看 | 久久国产免费视频 | 久久免费的精品国产v∧ | 欧美成a人片在线观看久 | 免费在线观看成人 | 欧美激情xxxx | 97av在线视频免费播放 | 欧美日韩国产欧美 | 欧美日韩综合在线观看 | 久草视频在线看 | 中文字幕在线第一页 | 黄色精品国产 | 91精品国产麻豆国产自产影视 | 国产精品自产拍在线观看中文 | 国产黄网站在线观看 | 久久在线精品 | 在线观看av麻豆 | 国产真实精品久久二三区 | 国产无套精品久久久久久 | 一区二区欧美激情 | 婷婷六月中文字幕 | 我要色综合天天 | 在线免费观看成人 | 精品国产视频在线 | 亚洲乱码在线 | 国产男女免费完整视频 | 婷婷日日| 免费一级毛毛片 | 亚洲天堂首页 | 菠萝菠萝蜜在线播放 | 欧美精品v国产精品 | 精品欧美一区二区三区久久久 | 超级碰碰免费视频 | 99精品热视频只有精品10 | 91免费看片黄 | 成人网444ppp | 国产剧情在线一区 | 亚洲最新在线视频 | 最新超碰在线 | 国产精品自产拍在线观看桃花 | 91av社区 | 91超在线| 日韩精品中文字幕在线观看 | 日韩欧美视频在线免费观看 | 免费日韩精品 | 精品一区二区电影 | 91在线国产观看 | 91手机在线看片 | zzijzzij亚洲成熟少妇 | 国产精品欧美久久久久三级 | 极品久久久| 亚洲精选视频免费看 | 国产二区视频在线观看 | 国产精品二区在线 | 天天天天天干 | 香蕉影院在线播放 | 十八岁以下禁止观看的1000个网站 | 国产黄av | 国产视频在线观看一区二区 | 18网站在线观看 | 最新一区二区三区 | 欧美嫩草影院 | 怡红院成人在线 | 美女网站免费福利视频 | 精品在线免费视频 | 大型av综合网站 | 国产精品9999 | 国产99久久久国产精品免费二区 | 国产亚洲成人网 | www.国产高清 | 日韩高清免费无专码区 | 免费99精品国产自在在线 | 午夜a区 | 国产精品久久精品 | 伊人资源视频在线 | 9ⅰ精品久久久久久久久中文字幕 | 日韩激情视频在线观看 | 午夜一级免费电影 | 久久久久久伊人 | 特黄免费av | 天堂网一区二区三区 | av高清影院 | 黄av免费在线观看 | 日韩videos高潮hd | 欧美成人基地 | 国产精品综合在线 | 狠狠干狠狠色 | 天天干天天操天天操 | 亚洲免费av网站 | 欧美激情视频免费看 | 在线观看一二三区 | 伊人五月在线 | 在线亚洲精品 | 国产精品精品久久久 | 国产91学生粉嫩喷水 | 懂色av一区二区在线播放 | 97国产精品 | 久久视频这里有久久精品视频11 | 国产黄免费 | 在线观看91精品视频 | 亚洲五月激情 | 国产精品久久久久久久久久久久冷 | 亚洲精品乱码久久久久v最新版 | 麻豆94tv免费版 | 中文字幕在线看视频 | 亚洲午夜久久久久久久久 | 日日干日日色 | 97热在线观看 | 亚州精品一二三区 | 又黄又爽又湿又无遮挡的在线视频 | 亚洲欧美乱综合图片区小说区 | 亚洲天天草 | 欧美专区国产专区 | 最近免费在线观看 | 日本特黄特色aaa大片免费 | 国产1级视频 | 在线观看日本韩国电影 | 亚洲极色 | 伊人伊成久久人综合网小说 | 看黄色.com | 99精品视频在线观看免费 | 手机在线看a | 美女视频黄,久久 | 日本在线观看中文字幕 | 亚洲色图22p | 久久久久国产a免费观看rela | 五月婷婷久草 | 亚洲成人av片 | 国产精品黑丝在线观看 | 成人免费在线观看电影 | 91精选在线观看 | 久久99婷婷 | 欧美久久久一区二区三区 | 五月婷婷中文 | 中文字幕在线视频国产 | 久久人人精品 | 国产一区二区三区在线免费观看 | 91精品夜夜 | 毛片3 | 美女视频黄的免费的 | 久久久高清免费视频 | 久久成人麻豆午夜电影 | 国产黄色片在线免费观看 | 日韩高清在线不卡 | 特级毛片网 | 免费情缘 | 在线黄色免费av | 激情久久伊人 | 香蕉蜜桃视频 | 亚洲一区动漫 | av高清在线观看 | 日韩精品一区二区三区在线播放 | 亚洲国产视频网站 | 一区二区三区在线观看 | 黄色aa久久 | 岛国一区在线 | 免费看一级特黄a大片 | 狠狠色网 | 日韩欧美一区二区三区黑寡妇 | 手机在线看片日韩 | 久久五月婷婷丁香 | 国产精品剧情 | 丁香av | 久久国产二区 | 久久99久久99精品中文字幕 | 欧美少妇bbwhd | 国产人成精品一区二区三 | 久久久久久久久久久久影院 | 中文字幕 国产 一区 | a色网站 | 国产一区二区三区免费在线观看 | 午夜免费电影院 | 久草精品视频在线播放 | 久久国产精品成人免费浪潮 | 黄色片免费电影 | 黄色在线成人 | 狠狠狠狠狠干 | 日韩av在线高清 | 日本黄色免费看 | 国产日产精品一区二区三区四区的观看方式 | 色多多视频在线 | 久久久精品在线观看 | 天堂在线一区 | 国产理论在线 | av黄在线播放 | 久久久久久久久久久免费av | 天天射天天舔天天干 | 日韩欧美在线视频一区二区三区 | 亚洲在线精品视频 | 欧美日韩高清在线一区 | 91视频91自拍 | 久久精品国产精品亚洲 | 久久久久久久久黄色 | 欧美日本不卡视频 | 五月天网页 | 九九精品视频在线看 | 色妞久久福利网 | 1区2区视频| 久久久 激情 | 波多野结衣一区三区 | 久久久精品电影 | 免费看黄在线 | 久久婷婷激情 | 免费观看性生交大片3 | 久久国产品 | 欧美a影视| 黄色免费观看网址 | 国产xx视频| 婷婷色中文 | 国产精品第 | 精品久久一区二区 | 国产精品亚洲综合久久 | 香蕉网在线 | 欧美性粗大hdvideo | 国产在线播放观看 | 福利一区二区三区四区 | 久久国产亚洲精品 | 天天操天天操天天 | 二区中文字幕 | 欧美一区日韩精品 | 国产精品一区欧美 | 国产一区福利在线 | 久久精品79国产精品 | 久久一区二区三区日韩 | 99色网站| 久久精品国产第一区二区三区 | 精品嫩模福利一区二区蜜臀 | 国产午夜一区二区 | 97国产| av片中文 | 久久精品首页 | 久久视频二区 | 337p西西人体大胆瓣开下部 | 成人动态视频 | 四虎最新入口 | 国产一区二区午夜 | 精品99999 | 日韩视频免费观看高清 | 国产裸体永久免费视频网站 | 91成年人在线观看 | 日韩高清dvd | 色婷婷av一区二 | 亚洲午夜av | 日本夜夜草视频网站 | 欧美日韩免费视频 | www.五月天婷婷 | 99爱国产精品 | 在线免费视频 你懂得 | 亚洲精品电影在线 | 久久xx视频| 亚洲精品国产精品国自产观看浪潮 | 伊人网综合在线观看 | 国产精品美女免费看 | 99re国产视频 | 日韩免费一区二区 | 99精品久久久久 | 午夜久久久影院 | 丁香六月av| 在线观看精品 | 国产小视频免费在线观看 | 欧美一级特黄高清视频 | 国产第一福利网 | 国产福利一区二区三区视频 | 激情综合网天天干 | 成人免费视频网址 | 九九热精品视频在线观看 | 欧美精品亚洲精品日韩精品 | 97成人精品视频在线观看 | 色综合激情网 | 五月婷婷电影网 | 91视频88av| 国产精品18久久久久久vr | 免费看亚洲毛片 | 久久久免费毛片 | 成人18视频 | 美女国产精品 | 91精品国自产在线 | 国产精在线| 久久久免费| 久久国产精品99国产精 | 亚洲国产精久久久久久久 | 91视频高清免费 | 中文字幕一区二区三区久久蜜桃 | 亚洲成av人片在线观看www | 麻豆精品国产传媒 | 麻豆视频大全 | 久久成人国产精品入口 | 久久综合中文色婷婷 | 91av资源在线 | 中文字幕国产 | 18av在线视频 | 久久精品免费 | 九九免费精品视频 | 国产99中文字幕 | 国产精品久久久久一区二区 | 成年人av在线播放 | 在线成人观看 | 欧美日韩国产一区二区三区在线观看 | 国产在线精品二区 | 99久热在线精品视频成人一区 | 国产精品免费视频观看 | 丁香婷婷综合激情五月色 | 日日躁你夜夜躁你av蜜 | 天天摸日日摸人人看 | 久久99国产精品久久99 | 精品一区二区视频 | www久久99| 国产亚洲视频系列 | 日韩中文字幕91 | 在线观看 亚洲 | 亚洲aⅴ在线| 久久天天躁狠狠躁亚洲综合公司 | 久草在线一免费新视频 | 操高跟美女 | 午夜av激情 | 婷婷狠狠操 | 在线观看国产福利片 | 亚洲美女在线一区 | 免费黄在线看 | 精品国产一区二区三区免费 | 人人插人人做 | 欧美日韩国产免费视频 | 99久久99久久精品国产片 | 在线观看免费一区 | 午夜久久福利影院 | 色婷婷久久一区二区 | 干干干操操操 | 国产综合在线视频 | 日韩免费视频播放 | www.日日日.com | 91av中文字幕 | 在线播放 日韩专区 | 日韩网 | 九七人人干 | 亚洲国产合集 | 99久久精品免费看国产免费软件 | 激情综合网五月激情 | 久久久久久国产精品美女 | 久久www免费视频 | 国产无吗一区二区三区在线欢 | 成人免费观看视频网站 | 夜色资源网| av电影一区 | 免费视频久久久久久久 | 日韩系列在线 | 欧女人精69xxxxxx | 国产婷婷在线观看 | 亚洲精品自拍视频在线观看 | 免费亚洲精品视频 | 女人18毛片90分钟 | 精品伊人久久久 | 99精品欧美一区二区三区 | www.日日日.com | 成人精品亚洲 | 一区二区三区动漫 | 天天操天天干天天爽 | 成人免费看片98欧美 | 成人久久| 亚洲综合成人专区片 | 国产亚洲久一区二区 | 91精品视频在线观看免费 | 国产中的精品av小宝探花 | 91理论片午午伦夜理片久久 | 国产精品精品 | 麻豆国产网站 | 久久综合狠狠综合久久综合88 | 免费观看xxxx9999片 | 91精品网站 | 中文字幕在线久一本久 | 夜夜视频欧洲 | 久久婷婷一区二区三区 | 成人免费在线看片 | 婷婷婷国产在线视频 | 超碰午夜 | 亚洲精欧美一区二区精品 | 天堂av在线免费观看 | 99在线精品视频观看 | 99爱视频在线观看 | 狠狠干激情| 狠狠操欧美 | 麻豆久久 | 97超级碰 | 欧美精品久久久 | 午夜av在线电影 | 日韩a级黄色| 色婷婷色 | 超碰97在线资源 | 欧美久久久久 | 天天干夜夜擦 | 欧美韩日视频 | 国产一区在线免费观看视频 | 精品国产一区二区三区四区在线观看 | 特级西西444www大精品视频免费看 | 黄色免费网站大全 | 久久免费看毛片 | 久久久91精品国产一区二区三区 | 黄色一级大片在线免费看国产一 | 亚洲国产精品电影 | 精品在线免费观看 | 国产福利午夜 | 欧美日韩大片在线观看 | 黄色在线观看免费网站 | а天堂中文最新一区二区三区 | 日韩电影在线观看一区二区三区 | 久免费 | 国产亚洲片 | 特黄色大片 | 91精品视频一区二区三区 | 黄色成人小视频 | 国产精品99爱 | 免费看黄网站在线 | 四虎影视成人 | 国内精品久久久久久久久久 | 免费看成人| 91天天操 | 欧美亚洲另类在线视频 | 少妇做爰k8经典 | 综合久久久久 | 欧美高清成人 | av在线播放国产 | 亚洲最大av在线播放 | 99re视频在线观看 | 日本黄色a级大片 | 美女在线观看网站 | 国产精品网红直播 | 密桃av在线| 人人干人人艹 | 操久久网 | 久久久久亚洲国产 | 日韩va欧美va亚洲va久久 | 成人午夜黄色影院 | 久久午夜精品 | 超碰97人 | 91视频在线观看免费 | 91精品免费看| 91片黄在线观看 | 国产精品成人aaaaa网站 | 高清av中文在线字幕观看1 | 国产不卡在线播放 | 超碰资源在线 | 欧美在线你懂的 | 亚洲免费婷婷 | 亚洲色图美腿丝袜 | av资源免费观看 | 亚洲精品国偷拍自产在线观看蜜桃 | 久草在线免费在线观看 | 亚洲精品乱码久久久久久按摩 | 国产精品高 | 午夜视频导航 | av解说在线 | 国产无遮挡猛进猛出免费软件 | 国产小视频在线播放 | 91丨九色丨国产在线观看 | 国产午夜精品久久 | 婷婷综合视频 | 亚洲精品婷婷 | 成人午夜精品久久久久久久3d | 欧美伦理一区二区 | 操操操日日日 | 国产精品一区在线观看你懂的 | 国产福利精品一区二区 | 最新国产在线视频 | 人人草在线视频 | 97超碰免费在线 | 在线成人免费电影 | 日韩av不卡在线观看 | 亚洲欧美婷婷六月色综合 | 中文字幕一区二区三区四区在线视频 | 五月婷婷欧美视频 | 在线影视 一区 二区 三区 | 日韩精品免费一区二区三区 | 国产免费黄视频在线观看 | 色婷婷88av视频一二三区 | 国产精品第一 | 国内精品久久久久影院日本资源 | 亚洲精选久久 | 欧美成人猛片 | 欧美一级在线观看视频 | 亚洲乱码久久久 | 日日干夜夜骑 | 天天综合入口 | 激情综合五月天 | 999久久久免费精品国产 | 三级黄色在线 | 亚洲精品视频网址 | 97品白浆高清久久久久久 | 免费精品在线观看 | 97香蕉久久超级碰碰高清版 | 色婷婷综合久久久 | 91精品在线视频观看 | 国产伦精品一区二区三区照片91 | 日韩精品一区二区三区中文字幕 | www日韩| 园产精品久久久久久久7电影 | 一区二区三区在线视频111 | 欧美a级在线 | 亚洲精品视频网站在线观看 | 国产最顶级的黄色片在线免费观看 | 免费av大全 | 91香蕉视频色版 | 国产精品1区2区3区 久久免费视频7 | 黄色一级片视频 | 国产精品久久久久av免费 | 中文字幕日韩精品有码视频 | www.久久婷婷 | 久久999精品 | japanesexxxxfreehd乱熟 | 色激情五月 | 精品一区二区三区在线播放 | 久久天天躁| 一本一本久久a久久精品牛牛影视 | 网站在线观看日韩 | 亚洲精品国产高清 | 激情开心网站 | 欧美激情综合色 | 久草线 | 日本黄色免费网站 | 丝袜av一区 | 精品一区二区视频 | 国产高清免费视频 | 黄色福利网站 | 亚洲激情在线观看 | 女人魂免费观看 | 午夜精品视频一区 | 欧美精品被| 久久精品理论 | 狠狠网站 | 日日弄天天弄美女bbbb | 一本一道久久a久久精品蜜桃 | 亚州精品在线视频 | 久久精品麻豆 | 色偷偷人人澡久久超碰69 | 六月丁香婷 | 久青草国产在线 | 色视频在线观看免费 | 国产最新91| 亚洲精品动漫在线 | 国产91大片 | 在线a视频免费观看 | 国产精品成人一区二区 | 国产一区二区在线播放 | www.天天操.com | 亚洲国产成人精品电影在线观看 | 999精品视频| 久亚洲| 激情视频一区二区 | 粉嫩av一区二区三区四区在线观看 | 九九九热精品免费视频观看网站 | 99一区二区三区 | 亚洲乱码中文字幕综合 | 国产不卡av在线 | 波多野结衣视频网址 | 欧美淫aaa免费观看 日韩激情免费视频 | 又黄又爽又刺激视频 | www.五月天婷婷.com | 黄色最新网址 | 黄色亚洲大片免费在线观看 | 涩涩资源网 | 国产手机视频在线播放 | 色婷婷久久一区二区 | 久久成人免费视频 | 一级黄色片在线 | 久久成人午夜视频 | 亚洲精品国产精品国自产观看浪潮 | 久草精品在线播放 | 99婷婷 | 国产精品久久久久久久久久不蜜月 | 免费黄色网址大全 | 日韩在线第一区 | 97色在线观看 | 国产视频二区三区 | 日韩欧美高清视频在线观看 | 久久 国产一区 | 91在线国内视频 | 99久久影视 | 欧美激情视频在线观看免费 | 国产91亚洲 | 日韩黄色大片在线观看 | 日韩欧美一区二区三区免费观看 | 毛片99| 在线电影日韩 | 中文字幕在线免费观看 | 麻豆传媒视频在线 | 999久久久久久久久久久 | 国产美女视频网站 | 人人爽人人爽人人爽学生一级 | 成人av影视 | 国产高清中文字幕 | 欧美日韩国产欧美 | 成人不用播放器 | 91香蕉视频好色先生 | 91精品国产99久久久久久红楼 | 国产亚洲精品综合一区91 | 一区二区三区四区五区在线视频 | 亚洲激情视频在线 | 最新中文字幕视频 | 久久99中文字幕 | 欧美成人播放 | 韩日在线一区 | 国产三级视频在线 | 国语精品免费视频 | 美女视频a美女大全免费下载蜜臀 | 欧美成年黄网站色视频 | 色综合久久中文字幕综合网 | 久久8| 色综合久久中文综合久久牛 | 国产亚洲观看 | 精品美女国产在线 | 国产精品午夜免费福利视频 | 欧美日韩大片在线观看 | 日韩成人精品一区二区 | 精品av在线播放 | 99久久久国产精品免费观看 | 97视频人人免费看 | 国产麻豆视频免费观看 | av网站在线观看免费 | 天天天干天天射天天天操 | 国产精品久久电影观看 | 国产精品麻豆视频 | 最新av网址在线 | 天天摸天天舔 | 精品久久五月天 | 最近最新中文字幕视频 | 国产精品99久久免费黑人 | 亚洲精品小视频 | 日韩v在线 | 国产黄免费在线观看 | 国产精品自产拍在线观看网站 | 成片免费观看视频大全 | 国产精品免费一区二区三区在线观看 | 草免费视频 | 久久精品视频网 | 激情久久一区二区三区 | 亚洲成人免费 | 亚洲黄网站 | 亚洲爽爽网| 久久久久国产精品一区二区 | 天堂在线视频中文网 | 亚洲 欧洲 国产 日本 综合 | 在线观看色网站 | 探花视频在线观看免费 | 韩国一区在线 | 国产伦精品一区二区三区无广告 | 99九九99九九九视频精品 | 国产精品色视频 | 日韩理论在线 | 亚洲日韩欧美一区二区在线 | 欧美最猛性xxxxx免费 | 青青久草在线 | 麻豆精品视频在线观看免费 | 激情深爱五月 | www.成人sex | 国产高清不卡av | 久久国产影视 | 国产成人精品在线观看 | 96香蕉视频| 久久成人国产精品免费软件 | 不卡视频一区二区三区 | 久久第四色| 成 人 黄 色 免费播放 | 国产日韩精品一区二区三区在线 | 久草精品视频在线播放 | 99精品国产福利在线观看免费 | 五月婷婷激情六月 | 丁香综合五月 | 中文字幕在线观看一区 | 97超视频 | 久久久99久久 | 国产一区二区三区视频在线 | 成人免费亚洲 | 天堂av官网| 成人蜜桃视频 | 亚洲精品中文字幕在线观看 | 在线观看视频精品 | 午夜aaaa| 在线小视频| 一本一本久久a久久 | 一区二区三区国产精品 | 91麻豆看国产在线紧急地址 | 偷拍精偷拍精品欧洲亚洲网站 | 欧美日韩中文在线观看 | 亚洲电影院| 免费日韩一区二区三区 | 天天激情天天干 | 久久一区精品 | 2020天天干夜夜爽 | 精油按摩av| 五月开心婷婷 | 中文字幕一区二区三区乱码不卡 | www.啪啪.com| 国产精品综合久久久 | 久精品视频免费观看2 | 精品产品国产在线不卡 | 日本黄色免费大片 | 国产中文视 | 四虎影视久久久 | 国产成在线观看免费视频 | 国产午夜激情视频 | 亚洲国产网站 | 日韩精品一区二区三区高清免费 | 在线成人免费电影 | 久久综合久久综合九色 | 在线岛国av | 精久久久久 | 五月开心婷婷 | 中文字幕黄网 | 91cn国产在线 | 黄色网在线播放 | 韩国av免费在线 | 国产精品第 | 日韩av电影免费在线观看 | 人人干人人添 | www.天天色 | 黄色国产精品 | 一区二区三区在线看 | 不卡的av电影在线观看 | 国产亚洲一区二区在线观看 | 国产69精品久久99的直播节目 | 色在线中文字幕 | 91天天操 | 色婷婷激情电影 | 久久久激情视频 | 久久99精品国产91久久来源 | 少妇bbb| 三级黄色片子 | 色视频在线观看免费 | 国产亚洲精品久久久久久 | 国产精品久久久一区二区三区网站 | 色综合久久中文综合久久牛 | www.69xx| 在线看一级片 | 久久久黄色免费网站 | 97超碰资源网 | 国产精品va在线 | 欧美精品日韩 | 亚洲激情 在线 | 免费网站v | 成年人在线免费看视频 | 91麻豆精品久久久久久 | 激情综合亚洲精品 | 国产中文字幕视频在线观看 | 99精品毛片| 国产精品自产拍在线观看中文 | 最新日韩在线观看视频 | 精品国产成人在线影院 | 亚洲视频免费 | 日韩av在线不卡 | 色91在线视频 | 欧洲精品视频一区 | 久久精品一二三区白丝高潮 | 91中文字幕在线视频 | 亚洲精品美女久久久久 | 色婷婷www | 久久 地址 | 91.精品高清在线观看 | 国产九九九视频 | 99在线免费视频 | 99热最新地址 | 国产精品综合久久久 | 成人四虎 | 中文字幕在线观看1 | 日韩在线影视 | 成人午夜毛片 | 成人在线一区二区 | 成全在线视频免费观看 | 日韩精品一区电影 | 狠狠狠狠狠狠天天爱 | 欧美一级片免费播放 | 丁香激情综合久久伊人久久 | 欧美日韩精品久久久 | 在线午夜电影神马影院 | 亚洲狠狠操 | 亚洲一级片av | 欧美精品一区二区免费 | 天堂av色婷婷一区二区三区 | 亚洲欧美日本A∨在线观看 青青河边草观看完整版高清 | 国产拍在线 | 人人躁 | 91污视频在线 | 一级黄色片在线免费看 | 视频在线观看日韩 | 蜜臀久久99静品久久久久久 | 在线免费av观看 | 伊人电影天堂 | www.黄色网.com | 精品久久久久久亚洲综合网站 | 国产又粗又猛又黄又爽视频 | 天天艹天天爽 | 在线色资源 | 亚洲www天堂com | 免费看的av片 |