使用vcpkg安装cpr库后编译报错:找不到cpr/cpr.h文件
解决vcpkg安装cpr后编译找不到头文件的问题
核心解决方向:让编译工具链正确识别vcpkg的库路径
以下是几种直接可行的解决方案:
1. 用vcpkg自带的集成命令自动配置
这是最省心的方式,vcpkg能帮编译器自动关联所有已安装库的路径:
- 打开终端,进入你的vcpkg根目录(
documents/GitHub/vcpkg) - 执行命令:
执行成功后会提示全局集成生效,之后编译代码时无需手动指定路径,编译器会自动找到cpr和gumbo的头文件。./vcpkg integrate install
2. 编译时手动指定头文件与库路径
如果不想用全局集成,编译时直接通过参数告诉编译器路径:
以clang编译为例,命令格式如下:
clang++ scrapper.cpp -o scrapper -I documents/GitHub/vcpkg/packages/cpr_arm64-osx/include -I documents/GitHub/vcpkg/packages/gumbo_arm64-osx/include -L documents/GitHub/vcpkg/packages/cpr_arm64-osx/lib -L documents/GitHub/vcpkg/packages/gumbo_arm64-osx/lib -lcpr -lgumbo
-I后面跟头文件的根目录(即包含cpr、gumbo文件夹的include目录),这样#include "cpr/cpr.h"就能被正确解析-L指定库文件所在目录,-lcpr-lgumbo用于链接对应的库文件
3. 修正VS Code的c_cpp_properties.json配置
如果用VS Code开发,之前的配置可能路径填错了,正确配置如下:
打开.vscode/c_cpp_properties.json,修改includePath字段:
{ "configurations": [ { "name": "Mac", "includePath": [ "${workspaceFolder}/**", "documents/GitHub/vcpkg/packages/cpr_arm64-osx/include", "documents/GitHub/vcpkg/packages/gumbo_arm64-osx/include" ], "defines": [], "compilerPath": "/usr/bin/clang++", "cStandard": "c17", "cppStandard": "c++17", "intelliSenseMode": "macos-clang-arm64" } ], "version": 4 }
注意:这里填的是include根目录,不是include/cpr;修改完成后重启VS Code让配置生效。
4. CMake项目的配置方式
如果你的项目用CMake构建,按以下步骤配置:
- 执行CMake命令时指定vcpkg的工具链文件:
cmake .. -DCMAKE_TOOLCHAIN_FILE=documents/GitHub/vcpkg/scripts/buildsystems/vcpkg.cmake - 在
CMakeLists.txt中添加依赖关联:
这样CMake会自动处理头文件和库的路径关联。find_package(cpr REQUIRED) find_package(gumbo REQUIRED) add_executable(scrapper scrapper.cpp) target_link_libraries(scrapper PRIVATE cpr::cpr gumbo::gumbo)
内容的提问来源于stack exchange,提问作者Ryan
相关产品推荐
相关产品推荐

