Win10编译curlpp时CMake找不到CURL依赖如何解决
问题原因
curlpp 项目的 CMake 脚本通过 find_package(CURL) 查找依赖,该命令默认仅搜索系统默认路径、系统环境变量指向的 CURL 路径,不会自动识别你手动从源码编译的 CURL 存放位置,因此触发Could NOT find CURL (missing: CURL_LIBRARY CURL_INCLUDE_DIR)报错。
操作步骤
第一步:整理自定义编译的 CURL 产物
先确认你编译 CURL 后的文件结构,建议先在 CURL 的构建目录执行安装命令,把头文件、库文件统一输出到固定目录,避免散落在构建目录中难以定位:# 进入你之前编译curl时创建的build目录,执行以下命令,把产物安装到自定义路径 cmake --install . --prefix="D:\dev_libs\curl" # 路径可以换成你自己的存放位置安装完成后,你指定的prefix目录下会生成两个核心子目录:
include目录:包含curl头文件,可直接找到curl/curl.h文件lib目录:包含编译生成的库文件,Release版本一般为libcurl.lib,Debug版本一般为libcurl-d.lib,动态编译版本还会配套生成libcurl.dll
第二步:配置curlpp时显式指定CURL路径
你可以任选以下一种方式传参,不需要修改curlpp的CMakeLists.txt源码:- 命令行传参(推荐)
进入curlpp的build目录,执行cmake配置命令时,直接追加两个参数指定头文件和库文件路径:
cmake .. -DCURL_INCLUDE_DIR="D:/dev_libs/curl/include" -DCURL_LIBRARY="D:/dev_libs/curl/lib/libcurl.lib"注意:Windows路径中的反斜杠建议替换为正斜杠,或者用双反斜杠转义,避免CMake将反斜杠识别为转义字符;如果编译Debug版本的curlpp,CURL_LIBRARY要指向Debug版本的libcurl-d.lib,保证版本、架构(x86/x64)完全匹配
2. CMake GUI配置
如果你使用CMake图形化工具,第一次点击Configure后,在参数列表中找到CURL_INCLUDE_DIR和CURL_LIBRARY两个条目,通过浏览按钮分别选中本地curl的include目录、对应版本的libcurl.lib文件,再次点击Configure即可。- 命令行传参(推荐)
第三步:验证配置
重新Configure后如果没有再抛出找不到CURL的错误,即可正常执行编译命令生成curlpp库。如果仍报错,优先检查两个点:- 你选择的curl库架构(x86/x64)、编译版本(Debug/Release)和curlpp的编译配置完全一致
- 路径中不要包含中文、特殊空格字符,避免CMake路径解析失败
避坑提示
- 如果你的系统中存在多个curl版本(比如系统自带curl、其他软件附带的curl),配置时可以额外增加
-DCURL_DIR="D:/dev_libs/curl"参数,强制CMake优先搜索你自定义编译的curl版本,避免版本冲突。 - 如果你编译的是动态库版本的curl,后续运行依赖curlpp的程序时,需要把对应版本的
libcurl.dll放到程序同级目录,或者加入系统Path环境变量,避免运行时提示缺失dll。
内容的提问来源于stack exchange,提问作者imli

