概述

  • win10没有安装openssl
  • cmake version: 3.18
  • libevent version: 2.1.10-stable
  • libevent目前的版本中写好了 CMakeLists.txt, 如果有兴趣, 可以自己配置一个更加简明的配置文件
  • 本文将介绍两种方式编译libevent: A、不依赖openssl, B、依赖openssl

先介绍不依赖openssl

先介绍不依赖openssl

先介绍不依赖openssl

附 cmake生成解决方案的截图

cmake提示没有安装openssl

cmake配置

提示信息



可能看不清楚? 提示错误如下:

CMake Error at C:/xxxxx/cmake-3.18/Modules/FindPackageHandleStandardArgs.cmake:165 (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
OPENSSL_INCLUDE_DIR)
Call Stack (most recent call first):
C:/xxxxx/cmake_64/share/cmake-3.18/Modules/FindPackageHandleStandardArgs.cmake:458 (_FPHSA_FAILURE_MESSAGE)
C:/xxxxx/cmake_64/share/cmake-3.18/Modules/FindOpenSSL.cmake:486 (find_package_handle_standard_args)
CMakeLists.txt:811 (find_package) Configuring incomplete, errors occurred!

结果很明显,Configuring incomplete已经提示,配置失败了。 从提示中的CMakeLists.txt:811 (find_package)可知,最近依次执行到配置文件的811行。

敲黑板, 下面开始改进配置文件

打开libevent目录

找到 CMakeLists.txt文件



就是它,打开它,记事本或者其他工具打开,找到上报错中提示的811行。

811行前后代码如下

if(EVENT__HAVE_EVENT_PORTS)
list(APPEND SRC_CORE evport.c)
endif() if (NOT EVENT__DISABLE_OPENSSL)
find_package(OpenSSL REQUIRED) set(EVENT__HAVE_OPENSSL 1) message(STATUS "OpenSSL include: ${OPENSSL_INCLUDE_DIR}")
message(STATUS "OpenSSL lib: ${OPENSSL_LIBRARIES}")
.....

可以知道,调用find_package(OpenSSL REQUIRED)出现错误,再仔细看下这个条件下执行的都是关于openssl的代码,既然没有安装openssl, 那么我们就将它跳过。

if 中的条件 NOT EVENT__DISABLE_OPENSSL, 当条件为 FALSE 就可以跳过了, 所以,只需要将 EVENT__DISABLE_OPENSSL 改为 ON即可。

修改EVENT__DISABLE_OPENSSL

全文搜索,从上到下找到EVENT__DISABLE_OPENSSL, 将其改为ON



代码

option(EVENT__DISABLE_OPENSSL
"Define if libevent should build without support for OpenSSL encryption" ON)

回到cmake

回到cmake,将cache清空,重新配置, 并config



configure结果

关于

modern cmake 已经爱不释手了

依赖openssl

依赖openssl

依赖openssl

下载地址

  • 这里 可以下载 已经编译好的 openssl的安装包(EXE+MSI),包括32和64位
  • 下载太慢? 我把它下载好,存放在这里,解决下载慢。
  • 注意,它虽然编译好了,但是有 系统要求的,如下:

  • openssl版本:v1.1.1
  • 它有light和非light区分,全部下载好,自行选择,从这里校对 HASH
  • 先安装openssl,再配置系统环境变量系统环境变量,系统环境变量
  • libevent version: 2.1.10-stable
  • cmake version: 3.18
  • win os version: 20H2
  • 本文将介绍一种依赖openssl编译libevent的方法

openssl 安装注意

一定要记住openssl安装后的目录,比如: C:\soft\install\openssl, 待会儿配置环境变量需要这个目录

配置环境变量

上文可知,缺少openssl后,cmake提示缺少系统环境变量

CMake Error at C:/xxxxx/cmake-3.18/Modules/FindPackageHandleStandardArgs.cmake:165 (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
OPENSSL_INCLUDE_DIR)

OPENSSL_ROOT_DIROPENSSL_CRYPTO_LIBRARYOPENSSL_INCLUDE_DIR 都是缺少的。那我们就加上。

name value
OPENSSL_ROOT_DIR C:\soft\install\openssl
OPENSSL_CRYPTO_LIBRARY C:\soft\install\openssl\lib
OPENSSL_INCLUDE_DIR C:\soft\install\openssl\include

我的环境变量配置

敲黑板,配置完环境变量,一定要重启PC

敲黑板,配置完环境变量,一定要重启PC

敲黑板,配置完环境变量,一定要重启PC

配置cmake

1.CMakeLists.txt配置

解压libevent的源码后,如果参考不依赖openssl,将EVENT__DISABLE_OPENSSL改为ON, 那么现在需要你改为OFF,恢复为默认。

2.cmake gui配置生成

选择合适的版本(32?64?)和编译器, configure.

3.附 cmake生成的解决方案

win10使用cmake编译libevent(解决依赖openssl)的更多相关文章

  1. Win10 下Cmake编译配置 Opencv3.1 + Cuda7.5 + VS2013

    折腾了三天终于配置成功了,在此写下编译配置的全部步骤和遇到的很多坑. 整体介绍: OpenCV 中 CUDA 实现的函数还不是太多,使用前要在OpenCV的官网上确认以下你想要的功能是否已经实现,否则 ...

  2. CMake编译如何解决[-Werror,-Wformat-security] 问题

    在用Android Studio进行Android开发时,常常采用 java代码调用C++代码,即JNI调用native的开发模式. 在上层build.gradle编译脚本里面可以指定C++代码的编译 ...

  3. [转]一个CMake编译问题的解决过程

    问题的提出 公司的一个power-pc平台的产品,有个协议进行了修改,过程中出现了比较奇怪的情况.直接将修改后的动态库下载到设备上(原始设备是有文件系统和其他的依赖文件的,相当于部分更新应用),设备和 ...

  4. win10 用cmake 3.5.2 和 vs 2015 update1 编译 GPU版本(cuda 8.0, cudnn v5 for cuda 8.0)

    win10 用cmake 3.5.2 和 vs 2015 update1 编译 GPU版本(cuda 8.0, cudnn v5 for cuda 8.0)  用vs 2015打开 编译Release ...

  5. AndroidStudio2.2.x以上使用cMake编译调用底层c生成依赖库

    最近使用AndroidStudio的最新ndk编译方式cMake来编译底层cpp文件,由于之前没有接触过cMake语法,先附上官方学习文档地址:https://developer.android.co ...

  6. Win10 VS2013 PCL1.8.1和依赖项VTK8.0.1, QHuall(2.15.2), FLANN1.9.1,Boost1.59.0,Zbil1.2.11和libPNG1.6.34编译安装

    编译和安装过程最好使用管理员权限去操作,避免不必要的错误. 一般而言为了区分Debug和Release库,添加输入变量 Name: CMAKE_DEBUG_POSTFIX Type: STRING V ...

  7. 使用Cmake编译CEF时遇到Error in configuration process,project file may be invalid的解决办法

    今天在用Cmake编译cef框架时,弹出了错误,如图: 可以排查一下几种原因: 1.在64位计算机编译32位程序 可以更换编译环境,或者下载64位版本来解决这个问题. 2.选择的Visual Stud ...

  8. linux 下cmake 编译 ,调用,调试 poco 1.6.0 小记

    上篇文章 小记了: 关于 Poco::TCPServer框架 (windows 下使用的是 select模型) 学习笔记. http://www.cnblogs.com/bleachli/p/4352 ...

  9. [转]VS2015+OpenCV3.3 GPU模块和opencv_contrib模块的编译以及采用CMake编译opencv_contrib时提示“No extra modules found in folder”问题的解决方案

    据官方说法,目前还不是太稳定的算法模块都在opencv_contrib里边,由于不稳定,所以不能在release版本里发行,只有在稳定以后才会放进release里边.但是这里边有很多我们经常要用的算法 ...

随机推荐

  1. VS调用别人的COM组件的问题

    调用第三方的COM组件,记得要先在管理员cmd执行:regsvr32 xxxx.dll 没执行之前运行 HRESULT hr = pComm.CreateInstance("xxxx.Com ...

  2. [Ocean Modelling for Begineers] Ch3. Basics of Geophysical Fluid Dynamics

    Ch3. Basics of Geophysical Fluid Dynamics 本章主要介绍 标量与向量 Newton定律 波动与恒定状态流体 浮力 科氏力 守恒律 紊动 N-S方程 3.1 Un ...

  3. 为什么Mysql用B+树做索引而不用B-树或红黑树

    B+树做索引而不用B-树 那么Mysql如何衡量查询效率呢?– 磁盘IO次数. 一般来说索引非常大,尤其是关系性数据库这种数据量大的索引能达到亿级别,所以为了减少内存的占用,索引也会被存储在磁盘上. ...

  4. 如何根据taxid(或taxname)快速获得taxname(或taxid)?

    目录 需求 实现 需求 我有一个物种taxonomy ID的list,想获得相应的物种名,不要一个个去NCBI Taxonomy官网查.反之根据物种名list查询对应的taxid. 实现 因为之前没怎 ...

  5. Windows下的Python多版本管理?

    虽然接触了好几年python,但一些细节没有注意.最近看网课,看到这个Windows系统下Python多版本管理的问题,记录下备忘. 假设现在windows环境中有python2,python3和an ...

  6. 【机器学习与R语言】3-概率学习朴素贝叶斯(NB)

    目录 1.理解朴素贝叶斯 1)基本概念 2)朴素贝叶斯算法 2.朴素贝斯分类应用 1)收集数据 2)探索和准备数据 3)训练模型 4)评估模型性能 5)提升模型性能 1.理解朴素贝叶斯 1)基本概念 ...

  7. 爬虫动态渲染页面爬取之Splash的介绍和使用

    Splash是一个JavaScript渲染服务,是一个带有HTTP API的轻量级浏览器,同时它对接了Python中的Twisted和QT库.利用它,我们同样可以实现动态渲染页面的抓取. 1. 功能介 ...

  8. 38- Majority Element

    Majority Element My Submissions QuestionEditorial Solution Total Accepted: 110538 Total Submissions: ...

  9. chown & chmod用法

    chown & chmod 1. chown更改文件的属主&属组 NAME chown - 改变文件的属主和属组(change file owner and group) 用法 cho ...

  10. Linux 参数代换 命令 xargs

    xargs 命令也是管道命令中的一员.xargs命令的功能简单来说就是参数代换.那么什么叫做参数代换,这里首先要了解管道的概念.在 linux管道 命令一节中我们详细介绍了管道命令的概念.这里我们只是 ...