使用 CMake 生成 OpenSSL 的 Visual Studio 工程

本文将引导您使用 CMake 生成 OpenSSL 的 Visual Studio 工程,方便您在 Windows 环境下编译和使用 OpenSSL 库。

1. 准备工作

  1. 下载并安装 CMake 工具: 您可以从 https://cmake.org/download/ 下载并安装 CMake 工具。
  2. 下载 OpenSSL 源代码: 您可以从 https://www.openssl.org/source/ 下载 OpenSSL 源代码。

2. 创建构建目录和 CMakeLists.txt 文件

  1. 在 OpenSSL 源代码目录下创建一个名为 'build' 的文件夹,作为编译输出目录。
  2. 在 'build' 目录下创建一个名为 'CMakeLists.txt' 的文件,并输入以下内容:
cmake_minimum_required(VERSION 3.10)
project(OpenSSL)

set(OPENSSL_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR})
set(OPENSSL_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/include)
set(OPENSSL_LIBRARY_DIR ${CMAKE_CURRENT_SOURCE_DIR}/lib)
set(OPENSSL_CRYPTO_LIBRARY ${OPENSSL_LIBRARY_DIR}/libcrypto.lib)
set(OPENSSL_SSL_LIBRARY ${OPENSSL_LIBRARY_DIR}/libssl.lib)

include_directories(${OPENSSL_INCLUDE_DIR})
link_directories(${OPENSSL_LIBRARY_DIR})

add_library(crypto STATIC IMPORTED)
set_property(TARGET crypto PROPERTY IMPORTED_LOCATION ${OPENSSL_CRYPTO_LIBRARY})

add_library(ssl STATIC IMPORTED)
set_property(TARGET ssl PROPERTY IMPORTED_LOCATION ${OPENSSL_SSL_LIBRARY})

add_executable(openssl_test main.c)
target_link_libraries(openssl_test crypto ssl)

3. 创建测试文件 'main.c'

  1. 在 OpenSSL 源代码目录下创建一个名为 'main.c' 的文件,并输入以下内容:
#include <stdio.h>
#include <openssl/rsa.h>
#include <openssl/evp.h>

int main(void)
{
    EVP_PKEY* pkey = EVP_PKEY_new();
    RSA* rsa = RSA_new();
    BIGNUM* e = BN_new();
    BN_set_word(e, RSA_F4);
    RSA_generate_key_ex(rsa, 2048, e, NULL);
    EVP_PKEY_set1_RSA(pkey, rsa);
    RSA_free(rsa);
    BN_free(e);
    EVP_PKEY_free(pkey);
    printf("Success\n");
    return 0;
}

4. 使用 CMake 生成 Visual Studio 工程

  1. 打开命令行窗口,并切换到 'build' 目录。
  2. 执行以下命令:
cmake -G "Visual Studio 16 2019" ..

其中 'openssl_source_directory' 为 OpenSSL 源代码目录。

5. 编译和运行程序

  1. 执行完上述命令后,会在 'build' 目录下生成 Visual Studio 工程文件。
  2. 打开 Visual Studio 工程文件,编译并运行程序,验证 OpenSSL 库是否可用。

注意: 确保您的系统已安装 Visual Studio 2019 或更高版本,并且已配置好 OpenSSL 的编译环境。

使用 CMake 生成 OpenSSL 的 Visual Studio 工程

原文地址: https://www.cveoy.top/t/topic/npnS 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录