You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Conan中心Boost库构建vsomeIP时无法找到Boost的问题

问题:构建vsomeIP时无法找到Boost依赖的原因分析

背景信息

我正按照指定wiki文档构建vsomeIP,因项目依赖Boost库,在项目目录下创建了conanfile.txt,内容如下:

[requires]
boost/1.83.0

[options]
boost/*:without_stacktrace=True #disable this dependency to continue the build

[generators]
CMakeDeps
CMakeToolchain 

已在项目同目录的build目录完成依赖安装,当前项目目录结构:

- build
- capicxx-someip-runtime
- vsomeip
- conanfile.txt

进入vsomeip目录后执行以下CMake命令:

cmake -Bbuild -DCMAKE_INSTALL_PREFIX=../install_folder
-DCMAKE_TOOLCHAIN_FILE="../build"  -DENABLE_SIGNAL_HANDLING=1 -DDIAGNOSIS_ADDRESS=0x10 .

出现无法找到Boost的错误,报错信息:

CMake Warning: Ignoring extra path from command line:

"../install_folder"

CMake Warning (dev) at CMakeLists.txt:191 (find_package): Policy
CMP0167 is not set: The FindBoost module is removed. Run "cmake
--help-policy CMP0167" for policy details. Use the cmake_policy command to set the policy and suppress this warning.

This warning is for project developers. Use -Wno-dev to suppress it.

CMake Error at
C:/Tools/winlibs-x86_64-posix-seh-gcc-14.2.0-llvm-19.1.7-mingw-w64ucrt-12.0.0-r3/mingw64/share/cmake-3.31/Modules/FindPackageHandleStandardArgs.cmake:233
(message): Could NOT find Boost (missing: Boost_INCLUDE_DIR system
thread filesystem) (Required is at least version "1.66") Call Stack
(most recent call first):
C:/Tools/winlibs-x86_64-posix-seh-gcc-14.2.0-llvm-19.1.7-mingw-w64ucrt-12.0.0-r3/mingw64/share/cmake-3.31/Modules/FindPackageHandleStandardArgs.cmake:603
(_FPHSA_FAILURE_MESSAGE)
C:/Tools/winlibs-x86_64-posix-seh-gcc-14.2.0-llvm-19.1.7-mingw-w64ucrt-12.0.0-r3/mingw64/share/cmake-3.31/Modules/FindBoost.cmake:2423
(find_package_handle_standard_args) CMakeLists.txt:191
(find_package)

-- Configuring incomplete, errors occurred!

原因分析

1. CMake命令参数错误

  • 参数换行导致参数失效:原命令中-DCMAKE_INSTALL_PREFIX=../install_folder后换行,CMake将后续参数识别为新输入,导致../install_folder被当作多余路径忽略,同时影响CMAKE_TOOLCHAIN_FILE的配置有效性。
  • Toolchain文件路径错误:-DCMAKE_TOOLCHAIN_FILE="../build"仅指定了目录,未指向Conan生成的具体工具链文件conan_toolchain.cmake,CMake无法加载Conan提供的依赖配置。

2. CMake策略CMP0167未配置

CMake 3.31版本已移除旧的FindBoost模块,默认使用新的Boost查找逻辑,但vsomeIP的CMakeLists未设置CMP0167策略,导致CMake仍尝试使用已移除的模块查找Boost,无法识别Conan安装的Boost。

3. Conan依赖配置未被正确加载

由于Toolchain文件路径错误,CMake未加载Conan生成的CMakeDeps配置,无法获取Boost的安装路径、库文件等信息,只能通过系统默认方式查找,最终找不到对应依赖。

解决步骤

  1. 修正CMake命令:确保参数格式正确,指定完整的toolchain文件路径:
    cmake -Bbuild -DCMAKE_INSTALL_PREFIX=../install_folder -DCMAKE_TOOLCHAIN_FILE="../build/conan_toolchain.cmake" -DENABLE_SIGNAL_HANDLING=1 -DDIAGNOSIS_ADDRESS=0x10 .
    
  2. 确认Conan依赖安装完成:进入项目根目录的build文件夹,重新执行Conan安装命令(确保依赖配置被正确生成):
    cd build
    conan install .. --build=missing
    
  3. 配置CMake策略(可选):若vsomeIP的CMakeLists仍报错,可在find_package(Boost)前添加策略设置:
    cmake_policy(SET CMP0167 NEW)
    

内容的提问来源于stack exchange,提问作者mr.Arrow

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 00:55:09