Debian系统vcpkg安装restbed后编译提示头文件找不到问题求助
问题根因
VSCode 可以正常跳转是因为 c_cpp_properties.json 中手动配置了 vcpkg 的头文件搜索路径,IntelliSense 能正常索引;编译失败是因为 CMake 配置存在多处错误,构建时没有正确引入 restbed 的头文件和链接库。
CMake 配置错误点
CMAKE_TOOLCHAIN_FILE变量位置错误:vcpkg 工具链配置必须放在project()指令之前声明,放在项目声明之后不会生效,等于没有启用 vcpkg 集成。- 没有正确引入 restbed 头文件路径:
target_include_directories只配置了项目自身的头文件目录,没有包含 vcpkg 安装的第三方库头文件路径。 - 链接配置错误:
target_link_libraries中填写的是 restbed 头文件目录,不是需要链接的库文件路径,配置无效。 - 冗余配置:手动列出了源文件到
add_executable后,又声明了file(GLOB SOURCES "*.cpp")但未使用,属于无效配置。
解决步骤
- 替换为修正后的
CMakeLists.txt内容:
cmake_minimum_required(VERSION 3.18) # vcpkg工具链必须放在project指令之前声明 set(CMAKE_TOOLCHAIN_FILE "/home/kali/Applications/vcpkg/scripts/buildsystems/vcpkg.cmake" CACHE STRING "Vcpkg toolchain file") project(API) # 从vcpkg中查找已安装的restbed库 find_package(restbed CONFIG REQUIRED) add_executable(API main.cpp CalcResourceFactory.cpp CalcService.cpp CalcServiceSettingsFactory.cpp) # 直接链接restbed官方导出的目标,会自动配置头文件搜索路径和链接库路径 target_link_libraries(API PRIVATE restbed::restbed) target_include_directories(API PUBLIC ${CMAKE_SOURCE_DIR}/include) set_property(TARGET API PROPERTY CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON)
- 确认代码中引入 restbed 的写法为
#include <restbed>,使用尖括号引入第三方库头文件。 - 清空之前生成的构建缓存(删除整个 build 目录),重新执行 CMake 生成、编译操作即可。
内容的提问来源于stack exchange,提问作者Daniel Kariuki
相关产品推荐
相关产品推荐

