Windows10下CMake 3.11.1无法识别OpenSSL Win64 v1.1.0求助
解决CMake无法识别OpenSSL的问题(Windows 10环境)
我之前在Windows环境下折腾CMake找OpenSSL的时候也踩过一模一样的坑,结合你给出的环境(CMake 3.11.1、OpenSSL 1.1.0 Win64、Windows 10),给你几个试过都管用的解决方法:
1. 运行CMake时手动指定OpenSSL路径
CMake的FindOpenSSL模块经常没法自动识别非默认路径的OpenSSL,你可以直接在CMake命令行里硬指定路径,把下面的路径替换成你实际的OpenSSL安装目录:
cmake -G "Visual Studio 15 2017 Win64" ^ -DOPENSSL_ROOT_DIR=C:/Your/OpenSSL/Install/Path/Win64 ^ -DOPENSSL_INCLUDE_DIR=C:/Your/OpenSSL/Install/Path/Win64/include ^ -DOPENSSL_LIBRARIES="C:/Your/OpenSSL/Install/Path/Win64/lib/libssl.lib;C:/Your/OpenSSL/Install/Path/Win64/lib/libcrypto.lib" ^ ..
注意:
- 要匹配你的Visual Studio版本(比如用VS2019就改成
Visual Studio 16 2019 Win64) - 如果路径里有空格,一定要用双引号括起来
- OpenSSL 1.1.0的库文件名是
libssl.lib和libcrypto.lib,别和旧版本的ssleay32.lib/libeay32.lib搞混
2. 设置系统环境变量让CMake自动识别
把OpenSSL的路径加到系统环境变量里,重启终端/IDE后CMake就能自动找到了:
- 新增
OPENSSL_ROOT_DIR变量,值为你的OpenSSL Win64安装根目录 - 新增
OPENSSL_INCLUDE_DIR变量,值为%OPENSSL_ROOT_DIR%\include - 把
%OPENSSL_ROOT_DIR%\lib和%OPENSSL_ROOT_DIR%\bin加到系统PATH里
3. 在CMakeLists.txt里手动配置路径
如果上面两种方法都没效果,直接在项目的CMakeLists.txt里硬编码OpenSSL路径,强制CMake用你指定的位置:
# 先手动指定OpenSSL根目录 set(OPENSSL_ROOT_DIR "C:/Your/OpenSSL/Install/Path/Win64") # 再指定头文件目录 set(OPENSSL_INCLUDE_DIR "${OPENSSL_ROOT_DIR}/include") # 最后查找OpenSSL find_package(OpenSSL REQUIRED)
4. 排查版本和文件完整性
- 确认你用的是OpenSSL官方预编译的Win64版本,自己编译的版本可能路径结构不符合CMake的查找逻辑
- 可以尝试升级CMake到3.15以上版本,这个版本对OpenSSL 1.1.x的查找逻辑做了优化,兼容性更好
附你提供的错误信息:
CMake Error at D:/Private Server/Cmake/share/cmake-3.11/Modules/FindPackageHandleStandardArgs.cmake:137 (message): Could NOT find OpenSSL (missing: OPENSSL_LIBRARIES) Call Stack (most recent call first): D:/Private Server/Cmake/share/cmake-3.11/Modules/FindPackageHandleStandardArgs.cmake:378 (_FPHSA_FAILURE_MESSAGE) D:/Private Server/Cmake/share/cmake-3.11/Modules/FindOpenSSL.cmake:376 (find_package_handle_standard_args) CMakeLists.txt:XX (find_package)
OPENSSL目录截图:
内容的提问来源于stack exchange,提问作者Austyn Chaplin
相关产品推荐
相关产品推荐

