FindOpenSSL

尋找 OpenSSL 加密函式庫。

此模組會尋找已安裝的 OpenSSL 函式庫並判斷其版本。

在 3.19 版本中新增: 當請求版本時,可以將其指定為簡單值或範圍。有關版本範圍用法和功能的詳細說明,請參閱 find_package() 命令。

在 3.18 版本中新增: 支援 OpenSSL 3.0。

可選 COMPONENTS

在 3.12 版本中新增。

此模組支援兩個可選的 COMPONENTS:CryptoSSL。 兩個元件都有相關聯的匯入目標,如下所述。

匯入的目標

在 3.4 版本中新增。

此模組定義以下 IMPORTED 目標

OpenSSL::SSL

如果找到,則為 OpenSSL ssl 函式庫。

OpenSSL::Crypto

如果找到,則為 OpenSSL crypto 函式庫。

OpenSSL::applink

在 3.18 版本中新增。

OpenSSL applink 元件,可能需要在 MSVC 下編譯到專案中。 只有在找到的 OpenSSL 版本不低於 0.9.8 時,此目標才可用。 通過連結此目標,即使專案與上述 OpenSSL 目標具有不同的 MSVC 執行階段配置,也可以連結上述 OpenSSL 目標。 此目標在 MSVC 以外的平台上無效。

注意:由於使用目標如何消耗 INTERFACE_SOURCES,除非您確定自己在做什麼,否則始終首選將 OpenSSL::applink 目標連結為 PRIVATE,並確保此目標在任何函式庫或可執行檔的整個依賴圖中最多連結一次

target_link_libraries(myTarget PRIVATE OpenSSL::applink)

否則,您在建置和連結時可能會遇到意外的隨機問題,因為 ISO C 和 ISO C++ 標準幾乎沒有說明連結過程應該是什麼樣的。

結果變數

此模組將在您的專案中設定以下變數

OPENSSL_FOUND

系統具有 OpenSSL 函式庫。 如果沒有請求任何元件,則僅需要 crypto 函式庫。

OPENSSL_INCLUDE_DIR

OpenSSL 包含目錄。

OPENSSL_CRYPTO_LIBRARY

OpenSSL crypto 函式庫。

OPENSSL_CRYPTO_LIBRARIES

OpenSSL crypto 函式庫及其依賴項。

OPENSSL_SSL_LIBRARY

OpenSSL SSL 函式庫。

OPENSSL_SSL_LIBRARIES

OpenSSL SSL 函式庫及其依賴項。

OPENSSL_LIBRARIES

所有 OpenSSL 函式庫及其依賴項。

OPENSSL_VERSION

這設定為 $major.$minor.$revision$patch(例如 0.9.8s)。

OPENSSL_APPLINK_SOURCE

上述 OpenSSL::applink 目標中的來源。 如果找到的 openssl 版本低於 0.9.8 或平台不是 MSVC,則此變數應始終為未定義。

提示

可以設定以下變數來控制搜尋行為

OPENSSL_ROOT_DIR

設定為 OpenSSL 安裝的根目錄。

OPENSSL_USE_STATIC_LIBS

在 3.4 版本中新增。

設定為 TRUE 以尋找靜態函式庫。

OPENSSL_MSVC_STATIC_RT

在 3.5 版本中新增。

設定為 TRUE 以選擇 lib 的 MT 版本。

ENV{PKG_CONFIG_PATH}

在類似 UNIX 的系統上,使用 pkg-config 來定位系統 OpenSSL。 設定 PKG_CONFIG_PATH 環境變數以在其他位置尋找。 在多函式庫系統上很有用。