Windows下用CMake编译Avro 1.11.1时提示找不到Boost组件
解决Windows下用CMake编译Avro 1.11.1时Boost组件缺失的问题
你遇到的错误是CMake检测到了满足版本要求的Boost 1.73.0,但缺少Avro编译所需的iostreams、program_options、regex、system组件。以下是解决步骤:
1. 检查Boost组件是否已安装
Boost的部分组件(如你缺失的这几个)默认不会自动编译安装,需要手动处理。打开你的Boost安装目录,查看lib子文件夹,确认是否存在对应组件的库文件(例如boost_iostreams-vc142-mt-x64-1_73.lib,其中vc142对应Visual Studio 16的编译器版本,x64是架构)。如果没有这些文件,说明需要重新编译Boost。
2. 编译缺失的Boost组件
- 打开Visual Studio 16对应的开发者命令提示符(确保命令提示符的架构和你要编译的Avro一致,比如x64 Native Tools Command Prompt)。
- 切换到Boost的根目录,执行:
bootstrap.bat - 生成
b2工具后,运行以下命令编译并安装所需组件:
说明:b2 --with-iostreams --with-program_options --with-regex --with-system toolset=msvc-14.2 architecture=x86 address-model=64 installtoolset=msvc-14.2对应Visual Studio 16的编译器版本;address-model=64指定编译64位库,若需要32位则改为32;install会将编译好的库安装到Boost的默认安装路径。
3. 明确指定Boost路径给CMake
如果CMake仍无法找到组件,可在cmake命令中手动指定Boost的根目录和库目录:
cmake -G "Visual Studio 16" -DBOOST_ROOT="你的Boost根目录路径" -DBOOST_LIBRARYDIR="你的Boost库目录路径(如lib/x64-msvc-14.2)" ..
错误日志参考
CMake Error at D:/fesapiEnv/depenedencies/cmake/share/cmake-3.24/Modules/FindPackageHandleStandardArgs.cmake:230 (message): Could NOT find Boost (missing: iostreams program_options regex system) (found suitable version "1.73.0", minimum required is "1.38") Call Stack (most recent call first): D:/fesapiEnv/depenedencies/cmake/share/cmake-3.24/Modules/FindPackageHandleStandardArgs.cmake:594 (_FPHSA_FAILURE_MESSAGE) D:/fesapiEnv/depenedencies/cmake/share/cmake-3.24/Modules/FindBoost.cmake:2376 (find_package_handle_standard_args) CMakeLists.txt:78 (find_package)
内容的提问来源于stack exchange,提问作者Zohaib Raza
相关产品推荐
相关产品推荐

