Vcpkg: 總覽
VCPkg與CMake的關系:為Visual Studio編譯器而生。
在windows平台下開發C++程序時,有一個很大的痛點。那就是,dll有的是32位,有的是64位,有的VS2008,有的VS2010,導致令人雲里霧里。為了避免這個問題,往往需要一個統一的庫,存儲個個版本的dll,lib。這很不方便。從源碼編譯則可以避免這個問題。
vcpkg 是微軟 C++ 團隊開發適用於Windows,Linux 和 MacOS 的 C ++庫管理器。
vcpkg 自身也是使用 C++ 開發的 (而其他的 C++ 包管理大多並不是 C++ 開發的),並且 vcpkg 能夠幫助用戶在 Visual Studio 中更好地使用這些安裝好的庫。
vcpkg 整合了 git,構建系統整合的 CMake,而絕大多數的 C++ 項目都可以直接或者間接的方式使用 CMake 創建原生項目文件並構建。
參考文獻:https://blog.csdn.net/cjmqas/article/details/79282847 https://zhuanlan.zhihu.com/p/87391067
Vcpkg 可幫助您在 Windows、 Linux 和 MacOS 上管理 C 和 C++ 庫。 這個工具和生態鏈正在不斷發展,我們一直期待您的貢獻!
若您從未使用過vcpkg或希望了解如何使用vcpkg,請查閱快速開始章節。
如需獲取有關可用命令的簡短描述,請在編譯vcpkg后執行 vcpkg help
或執行 vcpkg help [command]
來獲取具體的幫助信息。
- Github: https://github.com/microsoft/vcpkg
- Slack: https://cppalliance.org/slack/, #vcpkg 頻道
- Discord: #include <C++>, #🌏vcpkg 頻道
- 文檔: Documentation
目錄
入門
首先,請閱讀以下任一方面的快速入門指南: Windows 或 macOS和Linux, 這取決於您使用的是什么平台。
有關更多信息,請參見 安裝和使用軟件包。 如果vcpkg目錄中沒有您需要的庫, 您可以 在GitHub上打開問題。 vcpkg團隊和貢獻者可以看到它的地方, 並可能將這個庫添加到vcpkg。
安裝並運行vcpkg后, 您可能希望將 TAB補全 添加到您的Shell中。
最后,如果您對vcpkg的未來感興趣,請查看 清單! 這是一項實驗性功能,可能會出現錯誤。 因此,請嘗試一下並打開所有問題!
快速開始: Windows
需求:
- Windows 7 或更新的版本
- Git
- Visual Studio 2015 Update 3 或更新的版本(包含英文語言包)
首先,請下載vcpkg並執行 bootstrap.bat 腳本。 它可以安裝在任何地方,但是通常我們建議您使用 vcpkg 作為 CMake 項目的子模塊,並將其全局安裝到 Visual Studio 項目中。 我們建議您使用例如 C:\src\vcpkg
或 C:\dev\vcpkg
的安裝目錄,否則您可能遇到某些庫構建系統的路徑問題。
> git clone https://github.com/microsoft/vcpkg
> .\vcpkg\bootstrap-vcpkg.bat
使用以下命令安裝您的項目所需要的庫:
> .\vcpkg\vcpkg install [packages to install]
您也可以使用 search
子命令來查找vcpkg中集成的庫:
> .\vcpkg\vcpkg search [search term]
若您希望在 Visual Studio 中使用vcpkg,請運行以下命令 (首次啟動需要管理員權限)
> .\vcpkg\vcpkg integrate install
在此之后,您可以創建一個非cmake項目 (或打開已有的項目)。 在您的項目中,所有已安裝的庫均可立即使用 #include
包含您需使用的庫的頭文件並無需添加額外配置。
若您在 Visual Studio 中使用cmake工程,請查閱這里。
為了在IDE以外在cmake中使用vcpkg,您需要使用以下工具鏈文件:
> cmake -B [build directory] -S . -DCMAKE_TOOLCHAIN_FILE=[path to vcpkg]/scripts/buildsystems/vcpkg.cmake
> cmake --build [build directory]
在cmake中,您仍需通過 find_package
來使用第三方庫。 請查閱 CMake 章節 獲取更多信息,其中包含了在IDE中使用cmake的內容。
對於其他工具 (包括Visual Studio Code),請查閱 集成指南。
快速開始: Unix
Linux平台的使用需求:
macOS平台的使用需求:
- Apple Developer Tools
- macOS 10.14 或更低版本中,您也需要:
首先,請下載vcpkg並執行 bootstrap.sh 腳本。 我們建議您將vcpkg作為cmake項目的子模塊使用。
$ git clone https://github.com/microsoft/vcpkg
$ ./vcpkg/bootstrap-vcpkg.sh
使用以下命令安裝任意包:
$ ./vcpkg/vcpkg install [packages to install]
您也可以使用 search
子命令來查找vcpkg中已集成的庫:
$ ./vcpkg/vcpkg search [search term]
為了在cmake中使用vcpkg,您需要使用以下工具鏈文件:
$ cmake -B [build directory] -S . -DCMAKE_TOOLCHAIN_FILE=[path to vcpkg]/scripts/buildsystems/vcpkg.cmake
$ cmake --build [build directory]
在cmake中,您仍需通過 find_package
來使用第三方庫。 為了您更好的在cmake或 VSCode CMake Tools 中使用vcpkg, 請查閱 CMake 章節 獲取更多信息, 其中包含了在IDE中使用cmake的內容。
對於其他工具,請查閱 集成指南。
安裝 Linux Developer Tools
在Linux的不同發行版中,您需要安裝不同的工具包:
- Debian,Ubuntu,popOS或其他基於 Debian 的發行版:
$ sudo apt-get update
$ sudo apt-get install build-essential tar curl zip unzip
- CentOS
$ sudo yum install centos-release-scl
$ sudo yum install devtoolset-7
$ scl enable devtoolset-7 bash
對於其他的發行版,請確保已安裝 g++ 6 或更新的版本。 若您希望添加特定發行版的說明,請提交一個 PR!
安裝 macOS Developer Tools
在 macOS 10.15 中,唯一需要做的是在終端中運行以下命令:
$ xcode-select --install
然后按照出現的窗口中的提示進行操作。
在 macOS 10.14 及先前版本中,您也需要使用 homebrew 安裝 g++。 請遵循以下部分中的說明:
在 macOS 10.15 之前版本中安裝 GCC
此條只在您的macOS版本低於 10.15 時是必須的。 安裝homebrew應當很輕松,請查閱 <brew.sh> 以獲取更多信息。 為了更簡便,請使用以下命令:
$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
然后,為了獲取最新版本的gcc,請運行以下命令:
$ brew install gcc
此時,您就可以使用 bootstrap.sh 編譯vcpkg了。 請參閱 快速開始
在 CMake 中使用 vcpkg
若您希望在CMake中使用vcpkg,以下內容可能幫助您:
Visual Studio Code 中的 CMake Tools
將以下內容添加到您的工作區的 settings.json
中將使CMake Tools自動使用vcpkg中的第三方庫:
{
"cmake.configureSettings": { "CMAKE_TOOLCHAIN_FILE": "[vcpkg root]/scripts/buildsystems/vcpkg.cmake" } }
Visual Studio CMake 工程中使用 vcpkg
打開CMake設置選項,將 vcpkg toolchain 文件路徑在 CMake toolchain file
中:
[vcpkg root]/scripts/buildsystems/vcpkg.cmake
CLion 中使用 vcpkg
打開 Toolchains 設置 (File > Settings on Windows and Linux, CLion > Preferences on macOS), 並打開 CMake 設置 (Build, Execution, Deployment > CMake)。 最后在 CMake options
中添加以下行:
-DCMAKE_TOOLCHAIN_FILE=[vcpkg root]/scripts/buildsystems/vcpkg.cmake
遺憾的是,您必須手動將此選項加入每個項目配置文件中。
將 vcpkg 作為一個子模塊
當您希望將vcpkg作為一個子模塊加入到您的工程中時, 您可以在第一個 project()
調用之前將以下內容添加到 CMakeLists.txt 中, 而無需將 CMAKE_TOOLCHAIN_FILE
傳遞給cmake調用。
set(CMAKE_TOOLCHAIN_FILE ${CMAKE_CURRENT_SOURCE_DIR}/vcpkg/scripts/buildsystems/vcpkg.cmake CACHE STRING "Vcpkg toolchain file")
使用此種方式可無需設置 CMAKE_TOOLCHAIN_FILE
即可使用vcpkg,且更容易完成配置工作。
Tab補全/自動補全
vcpkg
支持命令,包名稱,以及 Powershell 和 Bash 中的選項。 若您需要在指定的 shell 中啟用Tab補全功能,請依據您使用的shell運行:
> .\vcpkg integrate powershell
或
$ ./vcpkg integrate bash
然后重新啟動控制台。
示例
請查看 文檔 獲取具體示例, 其包含 安裝並使用包, 使用壓縮文件添加包 和 從GitHub源中添加一個包。
我們的文檔現在也可以從 ReadTheDocs 在線獲取。
觀看4分鍾 demo視頻。
貢獻者
Vcpkg是一個開源項目,並通過您的貢獻不斷發展。 下面是一些您可以貢獻的方式:
請參閱我們的 貢獻准則 了解更多詳細信息。
該項目采用了 Microsoft開源行為准則。 獲取更多信息請查看 行為准則FAQ 或聯系 opencode@microsoft.com提出其他問題或意見。
License
在此存儲庫中使用的代碼均遵循 MIT License。
數據收集
vcpkg會收集使用情況數據,以幫助我們改善您的體驗。 Microsoft收集的數據是匿名的。 您也可以通過使用 -disableMetrics
、在命令行上將--disable-metrics
傳遞給vcpkg,或通過設置環境變量 VCPKG_DISABLE_METRICS
並重新運行 bootstrap-vcpkg 腳本來選擇禁用數據收集。 請在 privacy.md 中了解有關 vcpkg 數據收集的更多信息。