【教程】windows环境下配置vcpkg作为包管理工具
一、下载
git clone https://github.com/microsoft/vcpkg.git
为避免后续步骤与我不同,可以与我使用同一版本的vcpkg:
git checkout 2025.03.19
二、配置
进入vcpkg目录,启动power shell(建议),执行
.\bootstrap-vcpkg.bat
顺利完成后,目录下会出现vcpkg.exe文件。
将 vcpkg 与开发环境(例如 Visual Studio 和 MSBuild)进行全局集成,使 vcpkg 安装的库能自动被项目识别和使用
.\vcpkg.exe integrate install
三、搜索和下载
这里以boost为例:
.\vcpkg.exe search boost
asio[coroutine]                           Boost.Coroutine (optional) if you use spawn() to launch coroutines
asio[regex]                               Boost.Regex (optional) if you use any of the read_until() or async_read_un...
async-mqtt               10.1.0           Header-only Asynchronous MQTT communication library for C++17 based on Boo...
async-mqtt[tls]                           Enable TLS support
azmq                     2023-03-23       Boost Asio style bindings for ZeroMQ
beast                    0#2              HTTP/1 and WebSocket, header-only using Boost.Asio and C++11
bext-wintls              0.9.8            Native Windows TLS stream wrapper for use with boost::asio
boost                    1.87.0#1         Peer-reviewed portable C++ source libraries
boost[cobalt]                             Build boost-cobalt
boost[mpi]                                Build with MPI support
boost-accumulators       1.87.0           Boost accumulators module
boost-algorithm          1.87.0           Boost algorithm module
boost-align              1.87.0           Boost align module
boost-any                1.87.0           Boost any module
....
根据第三列的备注即可判断哪个是想安装资源,第一列名字就是他们的key
.\vcpkg.exe install boost
四、验证
4.1 cmake项目
解决方案和项目是否在同一个目录会有不同的配置方式

除此之外,打开项目后顺手设置一下"始终使用CMake预设",方便后续打开cmake项目。(我这里是2022)

验证程序
#include "CMakeProject.h"
#include <boost/algorithm/string.hpp>
#include <boost/version.hpp>
using namespace std;
int main()
{
	std::string text = "hello world";
	cout << "Hello CMake." << endl;
	// 将字符串转换为大写
	boost::to_upper(text);
	std::cout << "Boost version: " << BOOST_LIB_VERSION << std::endl;
	std::cout << "Converted text: " << text << std::endl;
	return 0;
}
4.1.1 同一目录
主要配置命令如下,CMakeLists.txt
cmake_minimum_required (VERSION 3.8)
# 设置自己的 vcpkg 路径
set(VCPKG_PATH "E:/workspace/vcpkg")
project ("CMakeProject")
set(CMAKE_TOOLCHAIN_FILE "${VCPKG_P2ATH}/scripts/buildsystems/vcpkg.cmake" CACHE STRING "Vcpkg toolchain file")
set(CMAKE_PREFIX_PATH "${VCPKG_PATH}/installed/x64-windows;${CMAKE_PREFIX_PATH}")
find_package(Boost REQUIRED COMPONENTS algorithm)
add_executable (CMakeProject "CMakeProject.cpp" "CMakeProject.h")
target_link_libraries(CMakeProject PRIVATE Boost::algorithm)
4.1.2 不同目录
根目录下的CMakeLists.txt
# 设置自己的 vcpkg 路径
set(VCPKG_PATH "E:/workspace/vcpkg")
project ("CMakeProject")
set(CMAKE_TOOLCHAIN_FILE "${VCPKG_PATH}/scripts/buildsystems/vcpkg.cmake" CACHE STRING "Vcpkg toolchain file")
set(CMAKE_PREFIX_PATH "${VCPKG_PATH}/installed/x64-windows;${CMAKE_PREFIX_PATH}")
# Include sub-projects.
add_subdirectory ("CMakeProject")
项目中的CMakeLists.txt
find_package(Boost REQUIRED COMPONENTS algorithm)
add_executable (CMakeProject "CMakeProject.cpp" "CMakeProject.h")
target_link_libraries(CMakeProject PRIVATE Boost::algorithm)
4.2 vs项目
这里就以创建了console prj为例(都一样)。
源程序
#include <iostream>
#include <boost/algorithm/string.hpp>
#include <boost/version.hpp>
int main()
{
	std::string text = "hello world";
	std::cout << "Hello CMake." << std::endl;
	// 将字符串转换为大写
	boost::to_upper(text);
	std::cout << "Boost version: " << BOOST_LIB_VERSION << std::endl;
	std::cout << "Converted text: " << text << std::endl;
}
完了。不需要任何配置。
五、报错
我希望大家可以不来看这里...毕竟到这里证明你也遇到问题了..
5.1 无法解压cmake
安装第一步提示需要cmake 3.30.1版本以上,没有则安装,下载后解压失败:
error: Expected cmake-3.30.1-windows-i386/bin/cmake.exe to exist after fetching
尝试无果后,手动在本地环境安装对应版本的cmake,并设置bin到环境变量中,通过。
5.2 部分库安装时提示无法识别代码
检查你的控制台,在启动时是否有:“Active code page: 65001”这样的字符。
有任何字符都会导致vcpkg安装库出现问题。>nul
vcpkg安装库时,可能会将cmd的输出一起捕获并写入了输出文件中,导致编译出现问题。
解决方法:
找到下述文件,查看内容
- 注册表编辑器 -> 计算机 -> HKEY_CURRENT_USER -> SOFTWARE -> Microsoft -> Command Processor -> AutoRun
 - 注册表编辑器 -> 计算机 -> HKEY_LOCAL_MACHINE -> SOFTWARE -> Microsoft -> Command Processor -> AutoRun
 
如果内容如下,则修改为:chcp 65001>nul,这样既能切为UTF-8又能将输出屏蔽。

5.3 路径过长
安装部分库时可能出现报错:
CMake Error at ports/qt5-webengine/portfile.cmake:6 (message):
  terminating due to E:/workspace/vcpkg_2025_03_19/buildtrees/qt5-webengine
  being too long.
Call Stack (most recent call first):
  scripts/ports.cmake:203 (include)
两种解决办法:
- 剪切vcpkg整个文件夹到一个短路径中;
 - 使用虚拟盘创建新的路径;
 
这里我建议采用第二种
- 进入cmd
 - 创建虚拟盘符
- 这里我以 E:\workspace\vcpkg 为例,将其映射到 虚拟磁盘 A,虚拟磁盘需要是一个不存在的磁盘。
 - subst A: "E:\workspace\vcpkg"
 
 - 之后进入虚拟磁盘,再进行安装即可
- cd A:
 - .\vcpkg.exe install qt5-webengine:x64-windows
 
 
5.4 内存不足
vcpkg安装并构建qt相关库时,会使用qt官方开发的make 工具,默认使用全部线程,而构建库本身非常庞大的话,就会出现内存不足的情况,提示信息是:
CMake Warning at cripts/cmake/vcpkg_execute_build_process.cmake:65 (message):
  Please ensure your system has sufficient memory.
此时可以临时修改线程数(仅限当前控制台生效)
set VCPKG_MAX_CONCURRENCY=2
                    
                
                
            
        
浙公网安备 33010602011771号