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


      vcpkg-VC++打包工具

    1. 介绍

      VCPKG,是VC++ Packaging Tool。 是微软 C++ 团队开发的在 Windows 上运行的 C/C++ 项目管理工具,可以帮助您在 Windows 平台上获取 C 和 C++ 库.通过它能够方便的安装常用的 C/C++ 库,而且提供了 CMake 的集成。这使得使用 CMake 的项目在 Windows 下构建方便了很多,不需要自己手动去指定在 Windows 下如何找到依赖的库了。

      vcpkg 自身也是使用 C++ 开发的 (而其他的 C++ 包管理大多并不是 C++ 开发的),并且 vcpkg 能够帮助用户在 Visual Studio 中,更好的使用这些安装好的库.

      不过实际使用中还是碰到一些问题。为了减少依赖,直接复制一个可执行程序就能在其它机器上运行,经常会需要静态链接依赖的库。而在 Windows 上使用 vcpkg 静态链接需要一些特殊的操作。

      vcpkg 整合了 git,构建系统整合的 CMake,而绝大多数的 C++ 项目都可以直接或者间接的方式使用 CMake创建原生项目文件并构建.

    vcpkg遵循一下原则:

    • 开放源码

    • 无需安装

    • 支持重发构建

    • 自定义生成

    • 社区参与贡献

    • 端口集成(与 BSD Ports 机制类似)

      vcpkg是命令行包管理工具,在使用第三方库的c或c++开发中可以简化相关的配置操作

      vcpkg安装的包支持vs2015和vs2017工具集,目前在windows平台已有超过900多个包,linux平台超过350个包。在默认情况下,vcpkg会优先使用vs2017进行编译。如果未安装,则使用vs2015编译和安装。使用vcpkg对于c或c++开发,令人烦恼的第三方包管理工作大大的减轻,实则是“居家旅行,必备之品”。

      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。 

    2. vcpkg的常用操作:

    # 下载vcpkg项目
    git clone https://github.com/Microsoft/vcpkg
    
    # 本地编译
    bootstrap-vcpkg.bat
    
    # 搜索想要安装的包
    vcpkg search curl
    
    # 安装指定的包,curl包分号后面的表示架构,可用的值为之前列出的那些。
    vcpkg install curl:x64-windows
    
    # 列出已经安装的包
    vcpkg list
    
    # 已安装的包更新
    vcpkg upgrade
    
    # 删除已安装的包
    vcpkg remove curl:x64-windows

    3. 简单使用

      依赖要求:

    使用vcpkg, 要提前保证系统各种有以下:

    • Windows 10, 8.1, 7, Linux, or MacOS
    • Visual Studio 2017 or Visual Studio 2015 Update 3 (on Windows)
    • Git
    • Optional: CMake 3.10.2

       (1)将git.exe 路径防止在系统的path变量中。

      (2)克隆vcpkg仓库

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

      然后运行:

            C:src>cd vcpkg
    
            C:srcvcpkg>.ootstrap-vcpkg.bat

      (3)切换到源代码路径,执行构造

    powershell -exec bypass scriptsootstrap.ps1

      (4)设定user-wide整合(初次执行需要管理员权限)

      然后,运行如下命令使计算机的所有用户都可以使用vcpkg (备注:需要管理员权限)

    vcpkg.exe integrate install

      或者如下执行:

    PS D: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=D:/vcpkg/scripts/buildsystems/vcpkg.cmake"

      (5)安装库

      使用vcpkg安装任何的程序包:   C:srcvcpkg> .vcpkginstall sdl2 curl

    vcpkg.exe install sqlite3 boost

      (6)最后,后,在Visual Studio 2015 or Visual Studio 2017中新建工程,只需要 #include 对应的头文件即可使用。

    特点:

    (1)免配置
      无需配置include、library路径,无需配置library依赖,自动识别win32/x64

    (2)自动复制依赖

      如果依赖于某个library,则运行/打包时需要复制dll到对应路径,而Vcpkg会自动完成这一步骤

    3. 简单实例,如何安装sqlite步骤

    (1)查询sqlit的名称

    vcpkg.exe 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, please open an issue at:
        https://github.com/Microsoft/vcpkg/issues

    (2)安装sqlite3

    vcpkg.exe install sqlite3

    (3)确认是否安装成功

    vcpkg.exe list

    4. 指定特定版本的SQlit库

      安装64位版本

    vcpkg.exe install sqlite3:x64-windows

    6. 使用 sqlit

    (1) 打开Visual Studio 2015 新建工程,main.cpp如下

    #include <sqlite3.h>
    #include <stdio.h>
     
    int main(int argc,char** argv)
    {
        printf("%s
    ",sqlite3_libversion()):
        return 0;
    }

    (2)编译运行

      • 是否支持Visual Studio 2010 ?
        否,后续我会介绍Vcpkg用到的“知识点”,可以为Visual Studio 2010开发相应工具提供借鉴。

      • 是否支持静态编译库
        是,例如vcpkg.exe install xxx:x86-windows-static

      • 没有我需要的库怎么办
        自己写

    endl;

  • 相关阅读:
    eclipse中的TODO和FIXME
    使用mui框架后a标签无法跳转
    java.lang.OutOfMemoryError: Java heap space异常
    mysql中表触发器的简单使用
    编写第一个 Java 程序
    QDialog类exec()与show()的区别
    Qt中信号槽connect的多种类型
    2.3 UML活动图
    2.2 UML用例模型
    2.1 uml序言
  • 原文地址:https://www.cnblogs.com/icmzn/p/9704508.html
Copyright © 2020-2023  润新知