Tips for vcpkg


概述

vcpkg是微軟開發的在Windows, Linux和MacOS平台管理C/C++庫的開源工具。

快速開始

要求

使用vcpkg需滿足如下條件:

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

安裝vcpkg

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

PS> .\bootstrap-vcpkg.bat
Ubuntu:~/$ ./bootstrap-vcpkg.sh

為了讓計算機的所有用戶都可以使用vcpkg,運行如下命令(首次運行需管理員權限):

PS> .\vcpkg integrate install
Ubuntu:~/$ ./vcpkg integrate install

安裝庫

通過如下命令便可以安裝庫:

PS> .\vcpkg install sdl2 curl
Ubuntu:~/$ ./vcpkg install sdl2 curl

對於Windows平台,vcpkg默認安裝32位庫,如果想要設置為默認安裝64位庫,在環境變量中加上VCPKG_DEFAULT_TRIPLET=x64-windows即可。

如果你在安裝庫時下載速度非常慢甚至下載失敗,可以拷貝下載鏈接自行下載好庫的壓縮包,然后放在downloads文件夾,這樣vcpkg便直接使用下載好的庫來編譯安裝。

對於有些庫,默認可能不是所有的依賴都安裝,如ceres-solver,默認不支持suitesparse,cxsparse,此時可以通過命令.\vcpkg install ceres[suitesparse,cxsparse]:x64-windows --recurse重新安裝,其中--recurse表示可以卸載之前的庫。更多install參數可以通過命令.\vcpkg help install查看。

再比如支持cuda的opencv版本,可以通過命令.\vcpkg install opencv[cuda]:x64-windows來安裝。

卸載vcpkg

直接刪除vcpkg的文件夾即可。

使用庫

CMake

在CMake中使用通過vcpkg安裝的庫的最佳方式是通過工具鏈文件(toolchain file) scripts/buildsystems/vcpkg.cmake,讓安裝的庫通過find_package()被發現。

要使用這個文件,只需通過命令-DCMAKE_TOOLCHAIN_FILE=[vcpkg root]/scripts/buildsystems/vcpkg.cmake將其加入CMake命令行中即可。例如

cmake .. -DCMAKE_TOOLCHAIN_FILE=vcpkg/scripts/buildsystems/vcpkg.cmake (Linux/MacOS)
cmake .. -DCMAKE_TOOLCHAIN_FILE=vcpkg\scripts\buildsystems\vcpkg.cmake (Windows)

再比如,如果要用VS2017編譯器,輸入下面命令即可:

cmake .. -DCMAKE_TOOLCHAIN_FILE=D:\vcpkg\scripts\buildsystems\vcpkg.cmake -G "Visual Studio 15 2017 Win64"

還有一種方法,直接在CMakeLists.txt文件中指定CMAKE_TOOLCHAIN_FILE,即

set(CMAKE_TOOLCHAIN_FILE "D:\vcpkg\scripts\buildsystems\vcpkg.cmake")
project(PROJECT_NAME)

這里需要注意的是,設置CMAKE_TOOLCHAIN_FILE要在project()命令之前。另外多說一句,類似CMAKE_TOOLCHAIN_FILE, CMAKE_SYSTEM_NAME, CMAKE_C_COMPILER等這些變量都要在project()命令之前設定,不然CMake仍然會按照默認的設置來。

VisualStudio

在VS中,所有已經安裝的庫都被VS項目自動包含(通過前面提到的vcpkg integrate install命令實現),無需配置便可直接使用。

CLion

在CLion中的配置如下File -> Settings -> Build, Execution, Deployment -> CMake,在CMake Options中添加-DCMAKE_TOOLCHAIN_FILE=[vcpkg root]/scripts/buildsystems/vcpkg.cmake

vcpkg命令

  • vcpkg help: 幫助
  • vcpkg search: 搜索庫
  • vcpkg install: 安裝庫
    對於Windows平台
    • .\vcpkg install openmesh:x86-windows:安裝32位庫
    • .\vcpkg install openmesh:x64-windows:安裝64位庫
    • .\vcpkg install openmesh:x64-windows-static 安裝64位靜態庫
  • vcpkg list:列出所有已經安裝的庫
  • vcpkg upgrade:列出所有可以升級的庫,如果需要升級,需額外添加--no-dry-run命令
  • vcpkg update
  • vcpkg remove:移除某個已經安裝的庫,如果需要移除依賴該庫的其他庫,添加--recurse命令

vcpkg文件夾構成

  • buildtrees -- contains subfolders of sources from which each library is built
  • docs -- documentation and examples
  • downloads -- cached copies of any downloaded tools or sources. vcpkg searches here first when you run the install command
  • installed-- Contains the headers and binaries for each installed library. When you integrate with Visual Studio, you are essentially telling it add this folder to its search paths
  • packages -- Internal folder for staging between installs
  • ports -- Files that describe each library in the catalog, its version, and where to download it. You can add your own ports if needed
  • scripts -- Scripts (cmake, powershell) used by vcpkg
  • toolsrc -- C++ source code for vcpkg and related components
  • triplets -- Contains the settings for each supported target platform (for example, x86-windows or x64-uwp)

更新vcpkg

在vcpkg根目錄下的ports文件夾中可以看到當前版本包含的所有庫,但由於vcpkg項目正在活躍開發中,有時候有些庫在你當前的版本中並沒有加入,這時可以考慮更新vcpkg。首先拉取vcpkg的遠程倉庫,更新本地倉庫:

git fetch origin master:temp  // 從遠程的origin倉庫的master分支下載到本地並新建一個分支temp
git diff temp   // 比較本地的倉庫和遠程倉庫的區別
git merge temp  // 合並temp分支到master分支
git branch -d temp  // 如果不想要temp分支了,可以刪除此分支

然后重新編譯生成vcpkg.exe工具

PS> .\bootstrap-vcpkg.bat
Linux:~/$ ./bootstrap-vcpkg.sh

然后可以通過命令.\vcpkg update .\vcpkg upgrade更新已經安裝好的庫。再通過install命令安裝新的庫。

參考


免責聲明!

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



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