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

无法从vcpkg安装中#include <fmt>的问题求助

fmt库#include <fmt>报错问题排查方案

主机环境

  • 操作系统:Windows 11 搭配 WSL(Ubuntu-22.04)
  • 编译器:Clang 14.0.0

问题详情

通过vcpkg install fmt --triplet x64-Linux完成fmt库安装,顶层CMakeLists.txt中配置查找FMT包并链接到可执行文件后构建成功,但代码中#include <fmt>时直接报错。IDE能自动提示FMT相关内容(已识别到包存在),确认fmt已安装,修改c_cpp_properties.json包含目录后问题未解决。相关代码包为hp_bot.zip。

解决建议

1. 修正CMake配置逻辑

确保CMake使用vcpkg提供的包配置模式,而非原生查找逻辑:

cmake_minimum_required(VERSION 3.20)
project(your_project_name)

# 必须以CONFIG模式查找fmt
find_package(fmt CONFIG REQUIRED)

add_executable(your_executable main.cpp)
# 链接fmt官方提供的目标
target_link_libraries(your_executable PRIVATE fmt::fmt)

2. 确认CMake工具链配置

执行CMake时必须指定vcpkg工具链文件,避免Windows与WSL路径混淆:

cmake -S . -B build \
  -DCMAKE_TOOLCHAIN_FILE=/path/to/vcpkg/scripts/buildsystems/vcpkg.cmake \
  -DVCPKG_TARGET_TRIPLET=x64-Linux

同时检查WSL环境中VCPKG_ROOT变量是否指向WSL内的vcpkg目录(禁止使用Windows路径)。

3. 让IDE自动读取编译配置

禁用手动修改的c_cpp_properties.json,让IDE从CMake生成的compile_commands.json自动获取包含目录:

  • 删除现有build目录,重新执行CMake配置生成compile_commands.json
  • 在VS Code中切换「CMake: Select Kit」为WSL下的Clang工具链,刷新CMake配置

4. 验证头文件路径是否被正确引入

在WSL中定位fmt头文件所在目录:

find $(vcpkg root)/packages/fmt_x64-linux -name "fmt" -type d

执行cmake --build build --verbose查看编译命令中的-I参数,确认上述路径是否被包含。若未包含,可在CMake中显式添加:

target_include_directories(your_executable PRIVATE ${fmt_INCLUDE_DIRS})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 17:47:26