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

使用lukka/run-vcpkg时CMake无法找到已安装的Boost包

Github Actions中vcpkg安装Boost后CMake无法找到的问题排查

问题概述

在Github Actions中使用lukka/run-vcpkg模板安装boost-program-options包后,CMake配置阶段报错无法找到Boost的头文件目录和program_options组件,尽管vcpkg日志显示包已成功安装。

CMake报错信息

Generating config files...
CMake Error at C:/Program Files/CMake/share/cmake-3.27/Modules/FindPackageHandleStandardArgs.cmake:230 (message):
Error:   Could NOT find Boost (missing: Boost_INCLUDE_DIR program_options)
-- Configuring incomplete, errors occurred!
Call Stack (most recent call first):
  C:/Program Files/CMake/share/cmake-3.27/Modules/FindPackageHandleStandardArgs.cmake:600 (_FPHSA_FAILURE_MESSAGE)
  C:/Program Files/CMake/share/cmake-3.27/Modules/FindBoost.cmake:2392 (find_package_handle_standard_args)
  D:/a/cpp-photobook/cpp-photobook/vcpkg/scripts/buildsystems/vcpkg.cmake:855 (_find_package)
  CMakeLists.txt:44 (find_package)

Github Actions配置

jobs:
  build:
    runs-on: windows-latest

    steps:
    - uses: actions/checkout@v3

    - name: run-vcpkg
      uses: lukka/run-vcpkg@v11.1
      with:
        vcpkgGitCommitId: '9edb1b8e590cc086563301d735cae4b6e732d2d2'
        runVcpkgInstall: true
        doNotCache: false
        vcpkgJsonGlob: '**/windows/vcpkg.json'

    - name: Build library
      run: cmake -B library\build -S sources -DCMAKE_TOOLCHAIN_FILE="${{ github.workspace }}\vcpkg\scripts\buildsystems\vcpkg.cmake"

vcpkg.json配置

{
  "$schema": "https://raw.githubusercontent.com/microsoft/vcpkg-tool/main/docs/vcpkg.schema.json",
  "dependencies": [
    "boost-program-options"
  ]
}

vcpkg安装日志(关键片段)

Additional packages (*) will be modified to complete this operation.
  A suitable version of 7zip was not found (required v21.7.0) Downloading portable 7zip 21.7.0...
  ...
  Installing 46/75 boost-program-options:x64-windows...
  Elapsed time to handle boost-program-options:x64-windows: 18.9 ms
  ...
 The package boost is compatible with built-in CMake targets:
  
      find_package(Boost REQUIRED [COMPONENTS <libs>...])
      target_link_libraries(main PRIVATE Boost::boost Boost::<lib1> Boost::<lib2> ...)

可能的原因及解决方法

  • 架构不匹配:vcpkg默认安装x64架构的包,但CMake在Windows上默认可能使用x86。在CMake命令中添加-A x64参数,确保架构一致:

    cmake -B library\build -S sources -DCMAKE_TOOLCHAIN_FILE="${{ github.workspace }}\vcpkg\scripts\buildsystems\vcpkg.cmake" -A x64
    
  • 工具链路径手动拼接出错:lukka/run-vcpkg会自动设置VCPKG_CMAKE_TOOLCHAIN_FILE环境变量,直接使用该变量避免路径错误:

    cmake -B library\build -S sources -DCMAKE_TOOLCHAIN_FILE="${{ env.VCPKG_CMAKE_TOOLCHAIN_FILE }}" -A x64
    
  • CMake FindBoost模块干扰:确保CMakeLists.txt中没有手动设置Boost_INCLUDE_DIR、Boost_LIBRARY_DIR等变量,这些会覆盖vcpkg工具链的配置。同时使用vcpkg提供的目标链接方式:

    find_package(Boost REQUIRED COMPONENTS program_options)
    target_link_libraries(your_target PRIVATE Boost::program_options)
    
  • 缓存损坏:临时禁用vcpkg缓存,重新安装包验证是否为缓存问题。修改lukka/run-vcpkg步骤的doNotCache: true。

  • vcpkg.json路径问题:确认vcpkgJsonGlob指定的路径正确,vcpkg会根据该文件的位置生成对应的包安装环境,确保CMake使用的工具链与安装环境匹配。

内容的提问来源于stack exchange,提问作者yonutix

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 08:04:51