概述
- 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.