如何在Visual Studio中配置从源码构建外部Boost库并使用其.lib文件
我之前刚好折腾过这个配置,完全懂你不想把大体积的Boost源码塞进解决方案的痛点!下面给你一步步捋清楚怎么实现——直接用外部文件夹构建Boost,还能在你的VS项目里无缝调用:
1. 先搞定Boost源码的初始化
- 把Boost源码包解压到你选定的外部文件夹,比如
D:\ExternalLibs\boost_1_83_0(路径随便选,只要你记得住就行) - 打开和你的VS版本匹配的开发者命令提示符(比如VS2022就找“x64 Native Tools Command Prompt for VS 2022”,要对应你项目的平台位数)
- cd到Boost的根目录,运行
bootstrap.bat,等它生成b2.exe——这是Boost的核心构建工具
2. 在VS解决方案里加一个Boost构建项目
不用把源码复制进来,我们用空项目+自定义构建事件来关联外部源码:
- 打开你的VS解决方案,右键解决方案 → 添加 → 新建项目,选空项目,命名成
Boost.Build(名字随便,辨识度高就行) - 右键这个新项目 → 属性,进入配置页面:
- 先去VC++目录,添加包含目录:
$(BoostRoot)(后面我们会把这个宏定义成你的Boost外部路径),库目录先填$(BoostRoot)\stage\lib(这是b2生成.lib的默认位置) - 再去生成事件 → 预生成事件,添加构建命令:
注意:cd /d "$(BoostRoot)" b2.exe toolset=msvc-14.3 architecture=x86 address-model=64 --build-type=complete stagetoolset=msvc-14.3对应VS2022,VS2019是msvc-14.2,address-model选32或64要和你的项目平台一致;如果只想构建特定组件,比如线程、文件系统,可以加--with-thread --with-filesystem,能省不少构建时间
- 先去VC++目录,添加包含目录:
3. 给解决方案加全局宏(可选但推荐)
为了不用每个项目都填绝对路径,我们在解决方案层面定义宏:
- 右键解决方案 → 属性 → 配置属性 → 用户宏 → 添加,宏名设为
BoostRoot,值填你刚才的Boost外部路径(比如D:\ExternalLibs\boost_1_83_0) - 勾选“从父级或项目默认设置继承”,这样所有项目都能直接用
$(BoostRoot)这个变量
4. 在你的业务项目里调用Boost库
- 打开需要用Boost的项目的属性:
- 同样在VC++目录里,添加包含目录
$(BoostRoot)和库目录$(BoostRoot)\stage\lib - 去链接器 → 输入,添加你需要的Boost库文件名,比如
boost_thread-vc143-mt-x64-1_83.lib(后缀要和你b2的构建参数对应,mt表示多线程,x64是平台,1_83是版本)
- 同样在VC++目录里,添加包含目录
- 写个测试代码验证下:
编译运行正常的话,就说明配置到位了!#include <boost/thread.hpp> #include <iostream> void print_hello() { std::cout << "Hello from Boost thread!" << std::endl; } int main() { boost::thread t(print_hello); t.join(); return 0; }
一些小提醒
- 每次改了Boost的构建参数(比如换平台、加组件),记得先删掉Boost根目录下的
stage文件夹再重新构建,避免缓存问题 - 如果构建时提示找不到编译器,大概率是开发者命令提示符的版本和VS的平台工具集不匹配,换对应版本的命令提示符就行
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

