从源码编译Boost:无法生成libboost_unit_test_framework库求助
解决Boost单元测试库(libboost_unit_test_framework)未生成的问题
别着急,我之前编译Boost的时候也踩过类似的坑,尤其是针对特定编译器、架构的库生成问题,咱们一步步来排查解决:
1. 先确认是否显式指定了要编译单元测试库
Boost默认不会编译全量库,部分组件需要手动指定编译。如果你之前只用了默认的b2命令,大概率没包含unit_test_framework。可以用下面的命令精准编译你需要的版本:
b2 toolset=msvc-14.0 address-model=64 variant=debug threading=multi link=static --with-unit_test_framework
参数对应你要的目标库:
toolset=msvc-14.0:匹配VC140(VS2015)编译器address-model=64:生成x64架构的库variant=debug:Debug版本threading=multi:多线程版本(对应库名里的mt)link=static:生成静态库(如果需要动态库,改成link=shared即可)
如果想编译全量库确保不遗漏,也可以用:
b2 --build-type=complete toolset=msvc-14.0 address-model=64 variant=debug threading=multi link=static
2. 检查Boost.Build的初始化是否正确
如果还没初始化Boost构建工具,先在Boost源码根目录执行:
bootstrap.bat
这会生成b2.exe和bjam.exe,务必用生成的这个工具执行编译,避免用旧版本导致的兼容问题。
3. 验证输出目录与命名规则
编译完成后,库文件默认会放在boost_root/stage/lib目录下。你要找的libboost_unit_test_framework-vc140-mt-gd-x64-1_66.lib命名对应规则:
mt:多线程版本gd:Debug调试版本(g表示debug模式,d表示带调试信息)x64:64位架构1_66:Boost 1.66版本
如果你的编译参数和这些规则不匹配,生成的库名会有差异,一定要确保参数完全对应。
4. 排查编译过程中的错误
如果编译时出现报错,可能会中断单元测试库的生成。建议打开VS2015的Developer Command Prompt再执行编译命令(确保编译器环境变量正确加载),同时仔细查看输出日志里有没有针对unit_test_framework的错误提示,比如依赖缺失、语法兼容问题等。
5. 单独编译单元测试库
如果上面的步骤都没解决,可以直接进入单元测试库的构建目录单独编译,更易定位问题:
进入boost_root/libs/test/build目录,执行:
b2 toolset=msvc-14.0 address-model=64 variant=debug threading=multi link=static
内容的提问来源于stack exchange,提问作者AllForum
相关产品推荐
相关产品推荐

