win10使用cmake编译libevent(解决依赖openssl)
概述
- 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_DIR、OPENSSL_CRYPTO_LIBRARY 和 OPENSSL_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)的更多相关文章
- Win10 下Cmake编译配置 Opencv3.1 + Cuda7.5 + VS2013
折腾了三天终于配置成功了,在此写下编译配置的全部步骤和遇到的很多坑. 整体介绍: OpenCV 中 CUDA 实现的函数还不是太多,使用前要在OpenCV的官网上确认以下你想要的功能是否已经实现,否则 ...
- CMake编译如何解决[-Werror,-Wformat-security] 问题
在用Android Studio进行Android开发时,常常采用 java代码调用C++代码,即JNI调用native的开发模式. 在上层build.gradle编译脚本里面可以指定C++代码的编译 ...
- [转]一个CMake编译问题的解决过程
问题的提出 公司的一个power-pc平台的产品,有个协议进行了修改,过程中出现了比较奇怪的情况.直接将修改后的动态库下载到设备上(原始设备是有文件系统和其他的依赖文件的,相当于部分更新应用),设备和 ...
- 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 ...
- AndroidStudio2.2.x以上使用cMake编译调用底层c生成依赖库
最近使用AndroidStudio的最新ndk编译方式cMake来编译底层cpp文件,由于之前没有接触过cMake语法,先附上官方学习文档地址:https://developer.android.co ...
- 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 ...
- 使用Cmake编译CEF时遇到Error in configuration process,project file may be invalid的解决办法
今天在用Cmake编译cef框架时,弹出了错误,如图: 可以排查一下几种原因: 1.在64位计算机编译32位程序 可以更换编译环境,或者下载64位版本来解决这个问题. 2.选择的Visual Stud ...
- linux 下cmake 编译 ,调用,调试 poco 1.6.0 小记
上篇文章 小记了: 关于 Poco::TCPServer框架 (windows 下使用的是 select模型) 学习笔记. http://www.cnblogs.com/bleachli/p/4352 ...
- [转]VS2015+OpenCV3.3 GPU模块和opencv_contrib模块的编译以及采用CMake编译opencv_contrib时提示“No extra modules found in folder”问题的解决方案
据官方说法,目前还不是太稳定的算法模块都在opencv_contrib里边,由于不稳定,所以不能在release版本里发行,只有在稳定以后才会放进release里边.但是这里边有很多我们经常要用的算法 ...
随机推荐
- CF840D Destiny
题目传送门. 题意简述:多次询问求出一个区间最小的出现次数严格大于 \(\frac{r-l+1}{k}\ (2\leq k\leq 5)\) 的最小的数.无解输出 \(-1\). 注意到这个 \(k\ ...
- 错误笔记: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable) E: Unable to lock the administration di
亲测可用 --jack alexander@alexander-virtual-machine:~$ sudo apt-get install -y httpdE: Could not get loc ...
- vim文本编辑器的基本使用
vim文本编辑器的基本使用 1. vi和vim的区别和联系 可以说vim是vi的增强版,在使用vim编辑文本时,可以根据字体颜色来判断编写程序的正确性. 2. vim文本编辑器的常用命令 1. 编辑指 ...
- 振鹏学习Java的第二天!
一.今日收获 1.了解了eclipse的具体使用方法. 2.学习了Java程序设计完全手册的第一章内容,明白了相关知识. 3.通过看哔哩哔哩的java的教程视频了解了Dos命令及java的变量和常量. ...
- RTSP, RTP, RTCP, RTMP傻傻分不清?
RTSP基于TCP传输请求和响应报文,RTP基于UDP传输流媒体数据,RTCP基于UDP传送传输质量信息(如丢包和延迟). 比如喀什一个局域网内10个人同时点播广州的同一个源,喀什和广州之间就要传10 ...
- accommodate ~ ache
accommodate The accommodation reflex [反射] (or accommodation-convergence [会聚] reflex) is a reflex act ...
- flink-----实时项目---day04-------1. 案例:统计点击、参与某个活动的人数和次数 2. 活动指标多维度统计(自定义redisSink)
1. 案例 用户ID,活动ID,时间,事件类型,省份 u001,A1,2019-09-02 10:10:11,1,北京市 u001,A1,2019-09-02 14:10:11,1,北京市 u001, ...
- C++ 之杂记
今天做了一个题,代码不难,但是编译的时候就恼火,老是报错,也不告诉我错哪了.... 之前的代码是这样的,在main函数中调用这个类的构造函数,就一直报错,但是不知道原因,后来加上了const 就好了. ...
- 【Netty】最透彻的Netty原理架构解析
这可能是目前最透彻的Netty原理架构解析 本文基于 Netty 4.1 展开介绍相关理论模型,使用场景,基本组件.整体架构,知其然且知其所以然,希望给大家在实际开发实践.学习开源项目方面提供参考. ...
- mysqldump冷备份
数据库备份的重要性 提高系统的高可用性和灾难可恢复性,在数据库系统崩溃时,没有数据备份就没法找到数据. 使用数据库备份还原数据库,是数据库崩溃时提供数据恢复最小代价的最优方案. 没有数据库就没有一切, ...