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:\src\vcpkg>.\bootstrap-vcpkg.bat

  (3)切換到源代碼路徑,執行構造

powershell -exec bypass scripts\bootstrap.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:\src\vcpkg> .\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\n",sqlite3_libversion()):
    return 0;
}

(2)編譯運行

    • 是否支持Visual Studio 2010 ?
      否,后續我會介紹Vcpkg用到的“知識點”,可以為Visual Studio 2010開發相應工具提供借鑒。

    • 是否支持靜態編譯庫
      是,例如vcpkg.exe install xxx:x86-windows-static

    • 沒有我需要的庫怎么辦
      自己寫

 

 

 

endl;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM