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;