sogou / workflow

C++ Parallel Computing and Asynchronous Networking Framework

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Windows 平台编译时cmake无法识别OpenSSL

FumbleBumbleD opened this issue · comments

cmake 3.29.0-rc2版本, OpenSSL 3.2.1版本。
项目workflow是 0.10.9 win版本。VS 2022版本

其中OpenSSL是通过 安装包 安装的。

报错信息以及cmake变量,使用控制命令行也是同一报错。见图一

OpenSSL环境变量也已经配置。见图二

安装的OpenSSL以及其路径。见图三

1
2
3

报错内容:
CMake Error at E:/lots_of_APP/cmake-3.29.0-rc2-windows-x86_64/share/cmake-3.29/Modules/FindPackageHandleStandardArgs.cmake:230 (message):
Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the
system variable OPENSSL_ROOT_DIR (missing: OPENSSL_CRYPTO_LIBRARY) (found
version "3.2.1")
Call Stack (most recent call first):
E:/lots_of_APP/cmake-3.29.0-rc2-windows-x86_64/share/cmake-3.29/Modules/FindPackageHandleStandardArgs.cmake:600 (_FPHSA_FAILURE_MESSAGE)
E:/lots_of_APP/cmake-3.29.0-rc2-windows-x86_64/share/cmake-3.29/Modules/FindOpenSSL.cmake:668 (find_package_handle_standard_args)
src/CMakeLists.txt:3 (find_package)
4

我们之前发现过OpenSSL 3.2在WIndows平台上的问题,所以我们在Windows分支ci里,强行指定了OpenSSL版本为3.1.1:3f4fef0
不过,我们当时遇到的是链接问题,不是找不到库。你能不能写一个和workflow无关的程序,先解决一下找不到OpenSSL库的问题?

cmake中新建项目,在CMakeList中加入find_package(OpenSSL REQUIRED),Build项目也是同一个报错。看来是Cmake和OpenSSL没找到的问题。。我再看看。。

这是cmake识别到的变量结果:

CMake Warning at CMakeLists.txt:14 (message):
OPENSSL_VERSION:

CMake Warning at CMakeLists.txt:15 (message):
OPENSSL_INCLUDE_DIR: E:/lots_of_APP/OpenSSL-Win64/include

CMake Warning at CMakeLists.txt:16 (message):
OPENSSL_LIBRARIES:

似乎是由于OpenSSL以及Cmake的版本不对应,导致cmake找不到OpenSSL的version还有Library,(但不知道为什么可以找到include文件)请问应该使用什么版本的Cmake,(OpenSSL改为3.1.1)的话

我找到的类似问题帖子:https://stackoverflow.com/questions/43662998/cmake-can-not-find-openssl-on-windows

Cmake版本应该无所谓的,我们没见过由于Cmake版本太新找不到OpenSSL的问题。
Windows平台我们支持力量不够,不少新功能也一直没有同步过去。建议装个WSL 2运行Linux版本。

我也遇到这类问题

CMake Error at D:/Program Files/CMake/share/cmake-3.29/Modules/FindPackageHandleStandardArgs.cmake:230 (message):
  Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the
  system variable OPENSSL_ROOT_DIR (missing: OPENSSL_CRYPTO_LIBRARY)
  (Required is at least version "1.1.0")
Call Stack (most recent call first):
  D:/Program Files/CMake/share/cmake-3.29/Modules/FindPackageHandleStandardArgs.cmake:600 (_FPHSA_FAILURE_MESSAGE)
  D:/Program Files/CMake/share/cmake-3.29/Modules/FindOpenSSL.cmake:668 (find_package_handle_standard_args)
  CMakeLists.txt:101 (find_package)

版本cmake gui和openssl版本和你一样,无论怎么设置依然没有办法识别。最后把openssl 降低为1.1.1w才可以

我也遇到这类问题

CMake Error at D:/Program Files/CMake/share/cmake-3.29/Modules/FindPackageHandleStandardArgs.cmake:230 (message):
  Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the
  system variable OPENSSL_ROOT_DIR (missing: OPENSSL_CRYPTO_LIBRARY)
  (Required is at least version "1.1.0")
Call Stack (most recent call first):
  D:/Program Files/CMake/share/cmake-3.29/Modules/FindPackageHandleStandardArgs.cmake:600 (_FPHSA_FAILURE_MESSAGE)
  D:/Program Files/CMake/share/cmake-3.29/Modules/FindOpenSSL.cmake:668 (find_package_handle_standard_args)
  CMakeLists.txt:101 (find_package)

版本cmake gui和openssl版本和你一样,无论怎么设置依然没有办法识别。最后把openssl 降低为1.1.1w才可以

感谢回复!更换OpenSSL版本至1.1.1可解决问题。

可以尝试在cmake gui中手动添加有关openssl的路径信息,如图
214940b8daa3eb1a6cf5a61ef12a01c