Windows下编译C++ Rest SDK遇CMake无法找到Boost库问题求助
解决CMake编译cpprestsdk时无法找到Boost库文件的思路
核心问题分析
CMake能识别Boost头文件版本,但找不到指定的库组件,大概率是编译器版本与vcpkg安装的Boost库不匹配,或是CMake配置存在语法/路径错误。
1. 匹配vcpkg triplet与编译器版本
你使用VS2013(Visual Studio 12)编译,但vcpkg默认的x64-windows triplet是用当前环境最新VS版本(你的是VS2022)编译的库,VS2013无法兼容这些库文件。需要重新安装对应VS2013的Boost组件:
vcpkg install boost-system boost-date-time boost-regex:x64-windows-v120
安装完成后,Boost库路径会变为C:\Users\a\vcpkg\installed\x64-windows-v120\lib,后续配置需对应更新。
2. 修正CMake变量设置的语法错误
你在cpprest_find_boost.cmake中的set命令多了一个逗号,这会导致变量设置无效:
错误写法:
set(Boost_LIBRARY_DIR, "C:\\Users\\a\\vcpkg\\installed\\x64-windows\\lib")
正确写法:
set(Boost_LIBRARY_DIR "C:\\Users\\a\\vcpkg\\installed\\x64-windows-v120\\lib")
(注意替换为对应triplet的路径)
3. 确保CMake工具链文件路径正确
将CMake命令中的相对路径改为绝对路径,避免路径解析错误:
C:\Users\a\cpprestsdk\build>cmake ../Release -A x64 -DCMAKE_TOOLCHAIN_FILE=C:/Users/a/vcpkg/scripts/buildsystems/vcpkg.cmake -G "Visual Studio 12 2013 Win64"
同时,VS2013的x64生成器建议明确指定Win64,避免CMake默认生成32位项目。
4. 跳过vcpkg的Boost包装器干扰
从错误栈可以看到vcpkg的vcpkg-cmake-wrapper.cmake介入了Boost查找,可能和手动设置冲突。添加以下参数强制CMake使用原生FindBoost模块:
-DBoost_NO_BOOST_CMAKE=ON
完整命令:
C:\Users\a\cpprestsdk\build>cmake ../Release -A x64 -DCMAKE_TOOLCHAIN_FILE=C:/Users/a/vcpkg/scripts/buildsystems/vcpkg.cmake -G "Visual Studio 12 2013 Win64" -DBoost_NO_BOOST_CMAKE=ON
5. 验证Boost库文件存在性
前往对应triplet的lib目录(如C:\Users\a\vcpkg\installed\x64-windows-v120\lib),确认存在以下VS2013版本的库文件:
boost_system-vc120-mt.libboost_date_time-vc120-mt.libboost_regex-vc120-mt.lib
如果不存在,说明vcpkg安装过程出错,需重新执行安装命令。
内容的提问来源于stack exchange,提问作者Stefan Deller
相关产品推荐
相关产品推荐

