精华内容
下载资源
问答
  • vcpkg :two_hearts: CMake集成 系好安全带,抬起脚来: 在对project(...)调用之前添加include(vcpkg.cmake) [在顶级CMakeListst.txt ] 在您的项目中有vcpkg.json清单? 是:完成! :rocket: 否:通过调用vcpkg_...
  • ..\vcpkg.exe export freetype --zip The following packages are already built and will be exported: * bzip2:x86-windows freetype:x86-windows * libpng:x86-windows * zlib:x86-windows Additional ...
  • vscode-vcpkg-模板 为了获得更好的软件包管理体验(如npm ,我们使用vcpkg和CMake。 vcpkg也可以生成Visual Studio项目文件。 为了获得更好的编码和智能体验,我们使用VSCode。 VSCode也比Visual Studio快得多。 ...
  • vcpkg-master.zip

    2019-12-30 14:34:42
    PS D:\src\vcpkg> .\vcpkg search sqlite libodb-sqlite 2.4.0 Sqlite support for the ODB ORM library sqlite3 3.15.0 SQLite is a software library that implements a se... If your library is not listed...
  • vcpkg-downloads

    2020-10-30 16:27:31
    本人使用vcpkg编译ceres是下载的一些包。将其中的内容拷贝到vcpkg-downloads文件夹中,再使用运行命令vcpkg install ceres[suitesparse,cxsparse]:x64-windows --recurse。vcpkg会直接解压、编译这些包。
  • CMake vcpkg项目示例 有关如何使用vcpkg及其( vcpkg.json )实验功能设置CMake项目的示例 入门 使用--recurse-submodules标志克隆--recurse-submodules git clone --recurse-submodules ...
  • vscode-qt-qml-vcpkg-模板 优点 VSCode上的调试和代码格式化要快得多 快速运行windeploy 。 缺点 VSCode CMake的构建要比Qt Creator慢,但是,您可以同时使用VSCode和Qt Creator,只需掌握本质并丢弃残渣即可。 如果...
  • Microsoft vcpkg.rar

    2020-04-28 10:30:37
    vcpkg 通过以下命令下载 git clone https://github.com/Microsoft/vcpkg.git 下载完成后自动建立了vcpkg目录。 本压缩包是该命令的执行结果,即“vcpkg目录”的全部内容。 后续命令为: > git clone ...
  • Vcpkg:概述 Vcpkg可帮助您在Windows,Linux和MacOS上管理C和C ++库。 该工具和生态系统在不断发展,我们始终感谢您的贡献! 请参阅主资源库以获取所有功能讨论,问题跟踪以及对可用库的编辑。 Vcpkg-tool:概述 ...
  • vcpkg-gui 软件包管理器的GUI应用程序。 GUI提供了简单的操作:查看所有已安装的vcpkg软件包,安装/删除软件包。 工作正在进行中。 可能暂时无法正常工作。 下载并构建 $ git clone ...
  • run-vcpkg操作将从高速缓存以及以前安装的端口恢复。 另一方面,当出现“高速缓存未命中”时: vpckg已获取并安装; 高速缓存的键由哈希主机操作系统名称,命令行参数和vcpkg的提交ID组成。 可以使用doNotCache: ...
  • Vcpkg可帮助您在Windows,Linux和MacOS上管理C和C ++库。 该工具和生态系统在不断发展,我们始终感谢您的贡献! 安装并运行vcpkg之后,您可能希望将Tab补全添加到Shell中。 使用CMake,您仍然需要find_package之类的...
  • vcpkg-index:在线vcpkg软件包索引查看器
  • vcpkg_Forcpprestsdk.7z

    2020-09-02 17:17:53
    编译cpprestsdk-2.10.16源码所需的vcpkg工具,及由vcpkg安装的依赖库,本地下载太慢。
  • 如果网络慢,我觉得可以下载后解压缩到vcpkg目录即可完成前两步。猜的哈。 > git clone https://github.com/Microsoft/vcpkg.git > cd vcpkg PS> .\bootstrap-vcpkg.bat PS> .\vcpkg integrate install 在以下...
  • my-vcpkg-triplet 我的vcpkg三胞胎集合
  • vcpkg.tar.gz

    2019-11-23 16:06:06
    用于安装vcpkg,已添加依赖;由于依赖下载太慢,已将依赖下载好,并放于downloads目录,如有需要请下载
  • grpc-vcpkg-boilerplate-example:这是一个简单的helloworld示例,显示了如何使用vcpkg管理器进行设置,配置和编译
  • 在使用此操作之前,请考虑编写纯工作流程! 在使用此操作之前,请考虑阅读和学习如何直接使用可在自己的计算机上运行的众所周知的工具... # Sample when vcpkg is a submodule of your repository (highly recommend
  • vcpkg-Gui-Wrapper vcpkg数据包管理器的图形包装。 在制品。 完成的清单 基本功能 图形用户界面 去做 单元测试 抛光 异常处理
  • vcpkg:使用 vcpkg

    2021-01-20 09:31:44
    我的目录是C:\Users\oceanstar\vcpkg\win 注意:目录名要求是 英文、中间不带空格 3、解压 4、运行引导程序: 引导程序将使用 Microsoft C/C++ 工具、库和 Windows SDK 的位置配置 vcpkg

    命令

    查看Vcpkg支持的开源库列表

    查看Vcpkg支持的开源库列表
    .\vcpkg\vcpkg search
    

    安装一个开源库

    这里的“安装”其实是指下载和编译。

    比如我们需要安装常用的jsoncpp库,那么执行命令

    .\vcpkg\vcpkg install jsoncpp
    

    输出

    Computing installation plan...
    A suitable version of cmake was not found (required v3.19.2). Downloading portable cmake v3.19.2...
    Extracting cmake...
    A suitable version of 7zip was not found (required v18.1.0). Downloading portable 7zip v18.1.0...
    Extracting 7zip...
    A suitable version of nuget was not found (required v5.5.1). Downloading portable nuget v5.5.1...
    Downloading nuget...
      https://dist.nuget.org/win-x86-commandline/v5.5.1/nuget.exe -> C:\Users\oceanstar\vcpkg\win\vcpkg\downloads\22ea847d-nuget.exe
    
    C:\Users\oceanstar\vcpkg\win>.\vcpkg\vcpkg install jsoncpp
    Computing installation plan...
    A suitable version of cmake was not found (required v3.19.2). Downloading portable cmake v3.19.2...
    Extracting cmake...
    A suitable version of 7zip was not found (required v18.1.0). Downloading portable 7zip v18.1.0...
    Extracting 7zip...
    A suitable version of nuget was not found (required v5.5.1). Downloading portable nuget v5.5.1...
    The following packages will be built and installed:
        jsoncpp[core]:x86-windows -> 1.9.4
    Detecting compiler hash for triplet x86-windows...
    A suitable version of powershell-core was not found (required v7.1.0). Downloading portable powershell-core v7.1.0...
    Downloading powershell-core...
      https://github.com/PowerShell/PowerShell/releases/download/v7.1.0/PowerShell-7.1.0-win-x86.zip -> C:\Users\oceanstar\vcpkg\win\vcpkg\downloads\PowerShell-7.1.0-win-x86.zip
    
    C:\Users\oceanstar\vcpkg\win>.\vcpkg\vcpkg install jsoncpp
    Computing installation plan...
    The following packages will be built and installed:
        jsoncpp[core]:x86-windows -> 1.9.4
    Detecting compiler hash for triplet x86-windows...
    A suitable version of powershell-core was not found (required v7.1.0). Downloading portable powershell-core v7.1.0...
    Extracting powershell-core...
    Could not locate cached archive: C:\Users\oceanstar\AppData\Local\vcpkg\archives\ca\ca86469a9ddb0e4cd2f352ca94cbfdc3993b0b17.zip
    Starting package 1/1: jsoncpp:x86-windows
    Building package jsoncpp[core]:x86-windows...
    -- Downloading https://github.com/open-source-parsers/jsoncpp/archive/9059f5cad030ba11d37818847443a53918c327b1.tar.gz -> open-source-parsers-jsoncpp-9059f5cad030ba11d37818847443a53918c327b1.tar.gz...
    -- Extracting source C:/Users/oceanstar/vcpkg/win/vcpkg/downloads/open-source-parsers-jsoncpp-9059f5cad030ba11d37818847443a53918c327b1.tar.gz
    -- Using source at C:/Users/oceanstar/vcpkg/win/vcpkg/buildtrees/jsoncpp/src/3918c327b1-034a82149a.clean
    -- Configuring x86-windows
    -- Building x86-windows-dbg
    -- Building x86-windows-rel
    -- Installing: C:/Users/oceanstar/vcpkg/win/vcpkg/packages/jsoncpp_x86-windows/share/jsoncpp/copyright
    -- Performing post-build validation
    -- Performing post-build validation done
    Stored binary cache: C:\Users\oceanstar\AppData\Local\vcpkg\archives\ca\ca86469a9ddb0e4cd2f352ca94cbfdc3993b0b17.zip
    Building package jsoncpp[core]:x86-windows... done
    Installing package jsoncpp[core]:x86-windows...
    Installing package jsoncpp[core]:x86-windows... done
    Elapsed time for package jsoncpp:x86-windows: 53.86 s
    
    Total elapsed time: 1.654 min
    
    The package jsoncpp:x86-windows provides CMake targets:
    
        find_package(jsoncpp CONFIG REQUIRED)
        target_link_libraries(main PRIVATE jsoncpp_lib jsoncpp_object)
    

    我们大致可以了解到install会经历这几个过程:

    • 环境初始化
    • 下载源代码(如果已经在cache中,则不下载)
    • 校验文件有效性
    • 解压缩源代码
    • 利用配套工具配置源码工程,在这里是使用的是cmake(如果是ffmpeg,则用msys2)
    • 编译源码。一般会同时编译Release和Debug版本。
    • 把编译好的文件拷贝到相关目录中去(一般是installed目录)

    指定编译某种架构的程序库

    如果不指定安装的架构,vcpkg默认把开源库编译成x86的Windows版本的库。那vcpkg总共支持多少种架构呢?我们可以使用如下命令便知:

    .\vcpkg.exe help triplet
    
    

    vcpkg支持众多架构,有arm-uwp, arm-windows, arm64-uwp, arm64-windows, x64-linux, x64-osx, x64-uwp, x64-windows, x64-windows-static, x86-uwp, x86-windows, x86-windows-static。

    那如果要安装编译某一个架构的开源库,我们该怎么写呢?我们只需要在需要安装的包后面指定相应的triplet即可。例如我们需要编译64位版本的jsoncpp,那么执行如下命令即可。

    .\vcpkg.exe install jsoncpp:x64-windows
    

    移除一个已经安装(编译)的开源库

    如果移除一个已经安装的开源库,那么执行remove指令即可。比如我们要移除jsoncpp,那么执行命令:

    .\vcpkg.exe remove jsoncpp
    

    注意:

    • 这个时候只是移除了默认的x86-winodws版本的文件,如果有其他平台的版本需要移除,需要制定相应的triplet。
    • 移除也只是移除了二进制程序库而已,源码包和解压缩的源码并没有删除。

    如果想要一键移除“过时”的包,执行命令:

    .\vcpkg.exe remove --outdated
    

    已安装的包更新

    一般有两种更新方式。一个是update指令,可以显示可以升级的开源库的列表。另一个是upgrade的指令,会重新编译所有需要更新的包。

    C:\Users\oceanstar\vcpkg\win\vcpkg》 vcpkg upgrade
    

    导出已经安装的开源库

    有的时候,一个项目组中有很多人,不需要每个人都参与编译。一个人编译好所有开源库后到处给别人即可。有的时候也是出于备份的目的,也会导出已经安装的开源库。导出可以执行export指令。例如,我要导出jsoncpp库,那么执行:

    .\vcpkg.exe export jsoncpp --7zip
    
    

    注意,导出时必须指定导出的包格式。vcpkg支持5种导出包格式,有:
    在这里插入图片描述
    一般地,导出包的格式为:vcpkg-export-<日期>-<时间>

    默认情况下只会导出x86-windows的包,如果要导出所有包,那需要制定相应的triplet。比如,如果同时导出x86和x64版本的jsoncpp,那执行命令:

    .\vcpkg.exe export jsoncpp jsoncpp:x64-windows --7zip
    

    这个命令等价于:

    .\vcpkg.exe export jsoncpp:x86-windows jsoncpp:x64-windows --7zip
    
    

    如果要指定输出目录和特定文件名,需使用"–output="参数

    导入备份的开源库

    .\vcpkg.exe import xxx.7z
    

    解决vcpkg下载缓慢

    第一步:去vcpkg里把下载链接复制出来,Downing后面的就是我们的下载链接
    在这里插入图片描述
    第二步:在外面用浏览器或别的下载工具下载这个文件
    在这里插入图片描述
    第三步:我们进去\vcpkg\downloads\temp这个文件夹中看看vcpkg对这个文件的命名是什么
    在这里插入图片描述
    第四步:将我们的文件也命名成这个,直接复制粘贴即可,然后放到\vcpkg\downloads\这个文件夹里

    第五步:直接点击右上角关闭按钮关闭vcpkg,重新打开,重新输入install命令即可,可以看到vcpkg已经采用了我们自己下好的包而不是它重新下一个了,这里利用的是vcpkg的缓存机制

    # 搜索想要安装的包
    C:\Users\oceanstar\vcpkg\win\vcpkg》 vcpkg search libssh2
    curl[ssh]                             SSH support via libssh2
    libgit2[ssh]                          SSH support via libssh2
    libssh2              1.9.0            The SSH library
    
    If your library is not listed, please open an issue at and/or consider making a pull request:
        https://github.com/Microsoft/vcpkg/issues
    
    # 安装指定的包,curl包分号后面的表示架构
    C:\Users\oceanstar\vcpkg\win\vcpkg》 vcpkg install libssh2:x64-windows
    
    
    
    
    # 列出已经安装的包
    C:\Users\oceanstar\vcpkg\win\vcpkg》 vcpkg list
    
    # 已安装的包更新
    C:\Users\oceanstar\vcpkg\win\vcpkg》 vcpkg upgrade
    
    # 删除已安装的包
    C:\Users\oceanstar\vcpkg\win\vcpkg》 **vcpkg remove libssh2:x64-windows
    

    Vcpkg和Visual Studio的集成

    上面我们已经安装了一些第三方库,那如何使用呢?常规情况下,我们需要设置include目录、lib目录等,会有很多工作量。Vcpkg提供了一套机制,可以全自动的适配目录,而开发者不需要关心已安装的库的目录在哪里,也不需要设置。这是Vcpkg的一大优势。

    集成到全局

    “集成到全局”适用于Visual Studio开发环境和msbuild命令行。执行命令:

    \win\vcpkg> .\vcpkg integrate install
    Applied user-wide integration for this vcpkg root.
    
    All MSBuild C++ projects can now #include any installed libraries.
    Linking will be handled automatically.
    Installing new libraries will make them instantly available.
    
    CMake projects should use: "-DCMAKE_TOOLCHAIN_FILE=C:/Users/oceanstar/vcpkg/win/vcpkg/scripts/buildsystems/vcpkg.cmake"
    

    当出现“Applied user-wide integration for this vcpkg root.”字样的时候,说明已经集成成功。这时候可以在任意的工程中使用安装好的第三方库。

    移除全局集成

     .\vcpkg integrate remove
    

    集成到工程

    上面已经可以集成到全局,为什么还要“集成到工程”呢?因为在大部分情况下,我们不希望集成到全局,毕竟有很多第三方库我们希望自定义处理一下,或者干脆不想集成第三方库。那么集成到工程是最灵活的处理方式。也是工程级项目推荐的处理方式。

    “集成到工程”是整个vcpkg中最复杂的一项,它需要利用Visual Studio 中的nuget插件来实现。我们接下来一步一步来说。

    生成配置

     .\vcpkg integrate project
    
    

    这时候会在<vcpkg_dir>\scripts\buildsystems目录下,生成nuget配置文件.
    其中<vcpkg_dir>是指vcpkg实际所在目录。

    基本配置

    展开全文
  • vcpkg GibHub库管理工具

    2018-12-05 16:14:33
    GibHub库管理工具,用于管理GibHub上开源代码库。 Vcpkg可帮助您管理Windows,Linux和MacOS上的C和C ++库
  • Vcpkg可帮助您在Windows,Linux和MacOS上管理C和C ++库。 这个工具和生态系统正在不断发展。 您的参与对它的成功至关重要! 有关可用命令的简短描述,请运行vcpkg help 。 GitHub: : 松弛: ://cpplang.now.sh/...
  • vcpkg

    2021-05-18 13:59:06
    vcpkg(2019/9/3) 源代码 vcpkg下载 编译 运行bootstrap-vcpkg.bat 基本命令 .\vcpkg.exe search // 查看Vcpkg支持的开源库列表 .\vcpkg.exe help triplet // 查看支持的编译架构x86-windows、x86-windows-static、...

    vcpkg(2019/9/3)

    源代码

    vcpkg下载

    编译

    运行bootstrap-vcpkg.bat

    基本命令

    .\vcpkg.exe search // 查看Vcpkg支持的开源库列表
    .\vcpkg.exe help triplet // 查看支持的编译架构x86-windows、x86-windows-static、x64-windows、x64-windows-static
    .\vcpkg.exe install jsoncpp // 安装一个开源库
    .\vcpkg.exe install jsoncpp:x64-windows // 指定编译某种架构的程序库
    .\vcpkg.exe remove jsoncpp // 移除一个已经安装(编译)的开源库(默认的x86-winodws版本的二进制库)
    .\vcpkg.exe remove --outdated // 移除“过时”的包
    .\vcpkg.exe list // 列出已经安装的开源库
    .\vcpkg.exe update // 列出可以升级的开源库的列表
    .\vcpke.exe upgrade // 重新编译所有需要更新的包
    .\vcpkg.exe export jsoncpp jsoncpp:x64-windows --7zip // 导出已经安装的开源库(–zip)
    .\vcpkg.exe import xxx.7z // 导入备份的开源库
    .\vcpkg.exe integrate install // 集成到vs全局
    .\vcpkg.exe integrate remove // 移除vs全局集成
    .\vcpkg.exe integrate project // 生成nuget配置文件
    

    参考

    Visual Studio开源库集成器Vcpkg全教程

    vcpkg-微软开发的VC++打包工具

    vcpkg:用于 Windows、Linux 和 MacOS 的 C++ 包管理器

    vcpkg问题-环境配置

    展开全文
  • 基本上是所有的文件了,主要包含了有些原地址下载失败的文件
  • vcpkgx.github.io:vcpkg资源管理器网站
  • 一个docker文件,用于使用所有基本的C ++开发工具以及vcpkg和boost库来生成映像。 如果只需要列表中的一些开发工具,请根据需要编辑dockerfile 基本映像和软件包详细信息: 基本图像:Ubuntu 20.10 包装方式: 必要...
  • VCPKG 特性 - Versioning

    2021-08-12 18:23:15
    在实际项目中,您的项目代码需要依赖第三方库的历史版本,以往的做法是将vcpkg回退到需要使用的版本,或者是自定义版本,这会导致其他的库也回退到以前的版本。 现在vcpkg提供了versioning 特性,可以方便地解决这个...

    背景

    在实际项目中,您的项目代码需要依赖第三方库的历史版本,以往的做法是将vcpkg回退到需要使用的版本,或者是自定义版本,这会导致其他的库也回退到以前的版本。 现在vcpkg提供了versioning 特性,可以方便地解决这个问题。Versioning 特性是默认开启的,不需要额外的设置来启用。注意:此特性依赖于manifest模式,使用这个特性前请先了解manifest特性。

    使用示例

    1. 创建一个简单的cmake工程, 然后让它依赖于 fmt 和 zlib, 假设需要依赖fmt版本大于等于 7.1.3。 创建文件夹 versioning 并包含以下3个文件 vcpkg.json,main.cpp, CMakeLists.txt:

     vcpkg.json:

    {
        "name": "versions-test",
        "version": "1.0.0",
        "dependencies": [
         {
            "name": "fmt",
            "version>=": "7.1.3"
          },
          "zlib"
        ],
        "builtin-baseline": "99dc49dae7e170c3be63dd097230007f3bb73c4f"
    }

     main.cpp:

    #include <fmt/core.h>
    #include <zlib.h>
    int main()
    {
        fmt::print("fmt version is {}\n"
                   "zlib version is {}\n",
                   FMT_VERSION, ZLIB_VERSION);
        return 0;
    }

     CMakeLists.txt:

    cmake_minimum_required(VERSION 3.18)
    
    project(versionstest CXX)
    add_executable(main main.cpp)
    
    find_package(ZLIB REQUIRED)
    find_package(fmt CONFIG REQUIRED)
    target_link_libraries(main PRIVATE ZLIB::ZLIB fmt::fmt)

    现在可以构建和运行cmake工程:

    1. 创建cmake工程构建目录:

    E:\vcpkg\vcpkgtest\versioning>mkdir build
    E:\vcpkg\vcpkgtest\versioning>cd build

     2. 配置CMake工程:

    cmake -G "Visual Studio 16 2019" -DVCPKG_TARGET_TRIPLET=x64-windows "-DCMAKE_TOOLCHAIN_FILE=E:/vcpkg/vcpkg_debug/vcpkg/scripts/buildsystems/vcpkg.cmake" ..

    输出:

    E:\vcpkg\vcpkgtest\versioning\build>cmake  -G "Visual Studio 16 2019" "-DCMAKE_TOOLCHAIN_FILE=E:/vcpkg/vcpkg_debug/vcpkg/scripts/buildsystems/vcpkg.cmake" ..
    -- Running vcpkg install
    Detecting compiler hash for triplet x64-windows...
    A suitable version of powershell-core was not found (required v7.1.3). Downloading portable powershell-core v7.1.3...
    Extracting powershell-core...
    The following packages will be built and installed:
        fmt[core]:x64-windows -> 7.1.3 -- E:\vcpkg\vcpkg_debug\vcpkg\buildtrees\versioning\versions\fmt\dd8cf5e1a2dce2680189a0744102d4b0f1cfb8b6
        zlib[core]:x64-windows -> 1.2.11#9 -- E:\vcpkg\vcpkg_debug\vcpkg\buildtrees\versioning\versions\zlib\827111046e37c98153d9d82bb6fa4183b6d728e4
    Using cached binary package: C:\Users\phoebe\AppData\Local\vcpkg\archives\c1\c1284fcdc26b903209c61a3a1cdaf0c511f63183f33d6586b7012a778638af17.zip
    Could not locate cached archive: C:\Users\phoebe\AppData\Local\vcpkg\archives\66\6651ef3a357c7ae220bedb6037b75b52421c637c7ecce7da40b8ac8a5067686c.zip
    Starting package 1/2: fmt:x64-windows

    Stored binary cache: C:\Users\phoebe\AppData\Local\vcpkg\archives\66\6651ef3a357c7ae220bedb6037b75b52421c637c7ecce7da40b8ac8a5067686c.zip
    Building package zlib[core]:x64-windows... done
    Installing package zlib[core]:x64-windows...
    Installing package zlib[core]:x64-windows... done
    Elapsed time for package zlib:x64-windows: 12.73 s
     
    Total elapsed time: 13.39 s
     
    -- Running vcpkg install - done
    -- Selecting Windows SDK version 10.0.19041.0 to target Windows 10.0.19043.
    -- The CXX compiler identification is MSVC 19.28.29915.0
    -- Detecting CXX compiler ABI info
    -- Detecting CXX compiler ABI info - done
    -- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.28.29910/bin/Hostx64/x64/cl.exe - skipped
    -- Detecting CXX compile features
    -- Detecting CXX compile features - done
    -- Found ZLIB: optimized;E:/vcpkg/vcpkgtest/versioning/build/vcpkg_installed/x64-windows/lib/zlib.lib;debug;E:/vcpkg/vcpkgtest/versioning/build/vcpkg_installed/x64-windows/debug/lib/zlibd.lib (found version "1.2.11")
    -- Configuring done
    -- Generating done
    -- Build files have been written to: E:/vcpkg/vcpkgtest/versioning/build
     

    3. 构建cmake工程:

    E:\vcpkg\vcpkgtest\versioning\build>cmake --build .
    Microsoft (R) Build Engine version 16.9.0+5e4b48a27 for .NET Framework
    Copyright (C) Microsoft Corporation. All rights reserved.
    
    Checking Build System
    Building Custom Rule E:/vcpkg/vcpkgtest/versioning/CMakeLists.txt
    main.cpp
    main.vcxproj -> E:\vcpkg\vcpkgtest\versioning\build\Debug\main.exe
    Building Custom Rule E:/vcpkg/vcpkgtest/versioning/CMakeLists.txt

    4. 运行cmake工程:

    E:\vcpkg\vcpkgtest\versioning\build>.\Debug\main.exe
    fmt version is 70103
    zlib version is 1.2.11

     请重点关注以下输出:

    fmt[core]:x64-windows -> 7.1.3 -- E:\vcpkg\vcpkg_debug\vcpkg\buildtrees\versioning\versions\fmt\dd8cf5e1a2dce2680189a0744102d4b0f1cfb8b6
    zlib[core]:x64-windows -> 1.2.11#9 -- E:\vcpkg\vcpkg_debug\vcpkg\buildtrees\versioning\versions\zlib\827111046e37c98153d9d82bb6fa4183b6d728e4

    可以看到 fmt选用了7.1.3版本, 而不是使用了本地 .\ports\fmt 提供的版本。注意:cmake3.18 及以后的版本才支持输出日志到命令框。如果使用cmake 3.18之前的版本,则需要从当前目录vcpkg-manifest-install.log 文件查看输出信息。

    Versioning 字段

    下面介绍versioning特性中涉及到的3个关键字段:

    overrides

    如果想指定fmt的版本,例如6.0.0, 而不是自动从baseline中查找,可以通过添加overrides去实现。它会覆盖任何其他的配置,而使用指定的 6.0.0 版本,这个方式对于解决版本之间的冲突问题特别实用。示例:

     vcpkg.json 文件:

    {
        "name": "versions-test",
        "version": "1.0.0",
        "dependencies": [
        {
          "name": "fmt",
          "version>=": "7.1.3"
         },
         "zlib"
        ],
        "builtin-baseline": "99dc49dae7e170c3be63dd097230007f3bb73c4f",
        "overrides": [
        {
           "name": "fmt",
           "version": "6.0.0"
         }
        ]
    }

    builtin-baseline

    关注以上示例中的zlib,可以发现 vcpkg.json 文件中并没有声明任何版本,它使用的版本为1.2.11#9,这个版本其实就是来源于 builtin-baseline。以下是获取 builtin-baseline 的方法:

    1. builtin-baseline 实际上是vcpkg仓库包含的 commit id,实际操作中我们可以通过执行以下git命令来获取vcpkg库最新的 commit id:

    git rev-parse HEAD

    实际上,vcpkg是通过以下命令来获取该commit中包含的baseline.json 文件版本。 

    git show 99dc49dae7e170c3be63dd097230007f3bb73c4f:versions/baseline.json

     2. 若需要查找某个库对应的历史版本,可以使用以下命令:       

     vcpkg x-history PORT_NAME

     注意:只能选择 date > 1/22/2021 以后的 version 所对应的 vcpkg commit, 将其设置为 builtin-baseline。这是因为在这之后,vcpkg才支持versioning特性,才有 baseline.json 文件。 例如:

    E:\vcpkg\clean\vcpkg> ./vcpkg x-history fmt
                 version          date    vcpkg commit
                 7.1.3#5    2021-07-01    9a7d5a29dd0e066ff4a7dbeba4bd8af4daae8b60
                 7.1.3#4    2021-04-28    345921bce4ee724d4c5b164eb93d051667d2d990
                 7.1.3#3    2021-04-07    5f77fef68d9f2f5ddc921432914dcbf92b31e989
                 7.1.3#2    2021-03-18    c8f6537b80831b1bd951b764bb4fa1f1c7973d83
                 7.1.3#1    2021-02-28    3426db05b996481ca31e95fff3734cf23e0f51bc
                 7.1.3#0    2020-11-30    1380e8fd4aabfb502023fb8c640fb7b5d73834e9
                 7.1.2#0    2020-11-06    d218ca7e6f6eab8679d2e968b43a208e689ac920
                 7.1.1#0    2020-11-03    c4c020828aa1b743707876ffaeb0dccf091e96f5
                 7.1.0#0    2020-10-26    c31cfd3c81a792d7073e71e8e4f9ab604f0f305e
                 7.0.3#3    2020-10-08    54dbd5ca9e808d3437a364c434bff7c6621f42ae
                 7.0.3#2    2020-09-04    d951a0033260a63e8d82c64ee1514b1c53364b55
                 7.0.3#0    2020-08-07    fbb5131bbc6a66d3950fdd44fbeca85d67fb0ff0
                 7.0.2#0    2020-08-06    4f9117c0dea8e58be6dc4102e40238f57b7b8533
                 6.2.1#0    2020-06-11    8d399bd86b94fdb4abf8d5c56f2a94b2d3aefda5
               6.2.0-1#0    2020-06-02    c5c350086508005af936a185949e910bfda2821d
                 6.2.0#0    2020-04-09    279867cb0c22b1251c5dd50f2dc17030ed9861c9
                 6.1.2#0    2020-03-02    705764c63549953c049b34c7a2d67b377d0bd006
               6.0.0-1#0    2020-01-06    153cab79c76175118f5b5d28135a57e00ae75a8d
                 6.0.0#0    2019-08-27    8b7f940d82f829bb7d6dbf986225d69b07cbcb40
               5.3.0-2#0    2019-06-15    18b029a5e3997fa4fdc7d3d06d56568a1d6f74ad
               5.3.0-1#0    2019-03-16    d7bf0e581942fca27ef9bf79c6684c8d19ae1967
                 5.3.0#0    2019-01-14    e86780d75ffb4476f58c725d40e2456eb503b766
                 5.2.1#0    2018-10-25    9c62c6a37ac940abbb4f19237d9a891881421a1a
                 5.2.0#0    2018-09-19    64a7483a4a4c9d176896ec7aec08a6acef4ea8f3
                 5.1.0#0    2018-07-10    0606add12f907733deba699611eb8692c6c4be9e
               5.0.0-1#0    2018-06-28    3a5b12004e4d9854f4a44337d5fa986b910c6bd6
                 5.0.0#0    2018-05-29    b82bbc4945a550c070af351fd769885047b54557
                 4.1.0#0    2017-12-26    178517052f42d428bb2f304946e635d3c1f318e9
               4.0.0-1#0    2017-09-09    26516fe485b0e9048dd4809256a7e4526957c6e9
                 4.0.0#0    2017-06-27    0ee8ad5cb2ed21731885fa40bd0e2776eec39c71
                 3.0.2#0    2017-06-15    2752e690b9230e8078d0688f0b9830874d0662df
               3.0.1-4#0    2017-02-09    43665857a3ad11de8135c7fd6cd9839269212d7d
               3.0.1-3#0    2017-02-03    95af9aac7c39765d1524b7c9c39dc283e9f0facf
               3.0.1-2#0    2017-02-02    62e7557545c17462670b7741d74dd2db4f5612eb
               3.0.1-1#0    2017-01-10    4f5f52ff470e83fa041ac4c6797bfa4e61ed2501
                 3.0.1#0    2016-11-22    1f22f927e2f2ba1eb8c702ced4bc6ad811da2bdc
               3.0.0-1#0    2016-11-10    b56819ec88f85d401160197b578b508916ac9962
                 3.0.0#0    2016-09-28    36799555441089420f29fcb2724d9fde23bc9ec1

     builtin-baseline 具体作用过程:

    1. 从给定的 builtin-baseline(commit id)版本中查找是否含有 baseline.json 文件,如果有,就从这个文件中查找该库的版本。

    2. 如果没有baseline.json,就会报错。

    3. 如果有baseline.json,但是它不包含库的历史版本,也会报错。

    version>=

    以上示例中,zlib 的版本号 1.2.11#9 是由 version 和 port-version 两部分组成,version(1.2.11) 是zlib的实际的版本号,port-version(9) 是这个版本在vcpkg中的补丁版本。两者组合可以获取该库在vcpkg中的具体版本。

    当version 版本更新时,port-version 重置为0 ,每次改动都加1。如上图所示,记录中从上到下显示了fmt版本的补丁修正与版本更新。

     在vcpkg中,版本是如何比较大小呢?实际是比较版本的新旧,例如:

    1.2.0 < 1.2.0#1 < 1.2.0#2 < 1.2.0#10
    2021-01-01#20 < 2021-01-01.1
    windows#7 < windows#8

     注意:

    1. Version>=  主要用于表示需要使用的最低版本,只有作为 "dependencies"的一部分时才是被允许的。

    2. 如果使用Version>=, vcpkg会从所有满足条件的版本中选用最低版本,这种做法的好处是更新vcpkg时,避免依赖升级出现异常的问题。可以总结为:

    如果使用 overrides,那么会使用 overrides 提供的版本,例如 fmt 6.0.0。如果没有,会选择 version>= 和 builtin-baseline 中最高的版本,例如:

        version>= 7.1.3  +  builtin-baseline(7.1.4) , 会安装 fmt 7.1.4;

        version>= 7.1.3  +  builtin-baseline(7.1.2) , 会安装 fmt 7.1.3。

    3. Vcpkg允许升级版本,例如: 如果zlib依赖fmt,而且声明依赖fmt 的 7.1.4 版本,那么vcpkg就会安装 7.1.4 版本,而不是 7.1.3。

    4. 在您的项目中,如果想升级依赖库的版本,只需把最低版本改掉,或者是把 builtin-baseline 改为更新的版本。

    5. Vcpkg 不会比较version类型不同的版本,例如:同一个库的2 个版本 ‘version-string: 7.1.3’ 与 `version: 7.1.4`,version 类型不同,所以不能比较。

    Versions 文件

    在vcpkg 的仓库中,文件夹https://github.com/microsoft/vcpkg/tree/master/versions 目录下,有baseline.json文件及对应 portname.json 文件。

    例如 zlib:baseline.json 文件包含zlib 当前最新的版本,versions/z-/zlib.json 中包含vcpkg 中 zlib的所有可选版本:

    {
      "versions": [
        {
          "git-tree": "53a4615c8bb9b98a3864b834a6bbe51cc6c849ef",
          "version-string": "1.2.11",
          "port-version": 10
        },
    
        {
          "git-tree": "827111046e37c98153d9d82bb6fa4183b6d728e4",
          "version-string": "1.2.11",
          "port-version": 9
        }
    }

      示例中git-tree是 SHA 哈希值,是由 以下 git 命令获取的:

    git rev-parse <commit>:<path>
    E:\vcpkg\vcpkg_debug\vcpkg> git rev-parse HEAD:ports/zlib
    53a4615c8bb9b98a3864b834a6bbe51cc6c849ef

     每次更新时,只需要执行 'vcpkg x-add-version zlib' 或者 'vcpkg x-add-version --overwrite-version zlib' 会自动更新zlib.json文件,不需要手动获取git-tree SHA 哈希值。可以使用 'vcpkg x-add-version --all' 去更新所有port的版本。

    参考: 

    https://github.com/microsoft/vcpkg/blob/master/docs/examples/versioning.getting-started.md

    https://github.com/microsoft/vcpkg/blob/master/docs/users/versioning.md

    首次发布于:https://www.cnblogs.com/vcpkg/p/15019907.html

    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,968
精华内容 787
关键字:

vcpkg