使用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 x64CMake 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
相关产品推荐
相关产品推荐

