win上编译带ssl的paho-cpp库

cpp 复制代码
OpenSSL官网:
Win32/Win64 OpenSSL Installer for Windows - Shining Light Productions

我安装的是Win64 OpenSSL v4.0.1
​

paho-c-build-x64.bat

该脚本虽然没有显式指定 SSL 路径,但 CMake 会通过 自动探测机制 找到你系统上安装的

cpp 复制代码
@echo off
setlocal enabledelayedexpansion

:: =====================================================
:: 参数检查
:: =====================================================
if "%~4"=="" (
    echo.
    echo Usage:
    echo   build.bat install_prefix build_type build_samples build_with_ssl
    echo.
    exit /b 1
)

set "INSTALL_PREFIX=%~f1"
set "BUILD_TYPE=%~2"
set "BUILD_SAMPLES=%~3"
set "BUILD_WITH_SSL=%~4"

set "PROJECT_DIR=C:\Users\Administrator\Desktop\paho.mqtt.c"

if not exist "%PROJECT_DIR%" (
    echo [ERROR] not found: %PROJECT_DIR%
    exit /b 1
)

pushd "%PROJECT_DIR%"

:: =====================================================
:: STATIC BUILD CONFIG
:: =====================================================
set "BUILD_DIR=build-x64\%BUILD_TYPE%"
set "INSTALL_DIR=%INSTALL_PREFIX%\paho-c\%BUILD_TYPE%"

set "GENERATOR=Visual Studio 16 2019"

echo.
echo ==========================================
echo BUILD PAHO-C (STATIC ONLY)
echo ==========================================
echo INSTALL = %INSTALL_DIR%
echo ==========================================
echo.

:: =====================================================
:: CLEAN
:: =====================================================
if exist "%BUILD_DIR%" (
    rmdir /s /q "%BUILD_DIR%"
)

:: =====================================================
:: CMAKE (STATIC ONLY FIX)
:: =====================================================
cmake ^
-G "%GENERATOR%" ^
-A x64 ^
-B "%BUILD_DIR%" ^
-DCMAKE_INSTALL_PREFIX="%INSTALL_DIR%" ^
-DPAHO_BUILD_SHARED=OFF ^
-DPAHO_BUILD_STATIC=ON ^
-DBUILD_SHARED_LIBS=OFF ^
-DPAHO_WITH_SSL=%BUILD_WITH_SSL% ^
-DPAHO_BUILD_SAMPLES=%BUILD_SAMPLES% ^
-DPAHO_ENABLE_TESTING=OFF

if errorlevel 1 (
    echo [ERROR] configure failed
    popd
    exit /b 1
)

cmake --build "%BUILD_DIR%" ^
--config %BUILD_TYPE% ^
--target install

if errorlevel 1 (
    echo [ERROR] build failed
    popd
    exit /b 1
)

popd

echo.
echo ==========================================
echo PAHO-C STATIC BUILD SUCCESS
echo ==========================================

pause
cpp 复制代码
打开Developer Command Prompt for VS 20xx
​​​​​​​终端上执行:
C:\Users\Administrator\Desktop\Mqtt-Script\paho-c-build-x64.bat C:\Users\Administrator\Desktop\build  Release TRUE TRUE

C:\Users\Administrator\Desktop\Mqtt-Script\paho-c-build-x64.bat是我bat脚本所在路径,
C:\Users\Administrator\Desktop\build是编译后的安装目录

paho-cpp-build-x64.bat

cpp 复制代码
@echo off
setlocal enabledelayedexpansion

:: =====================================================
:: 参数检查
:: =====================================================
if "%~4"=="" (
    echo.
    echo Usage:
    echo   build.bat install_prefix build_type build_samples build_with_ssl
    echo.
    echo Example:
    echo   build.bat D:\install Release TRUE TRUE
    echo.
    exit /b 1
)

:: =====================================================
:: 用户参数
:: =====================================================
set "INSTALL_PREFIX=%~f1"
set "BUILD_TYPE=%~2"
set "BUILD_SAMPLES=%~3"
set "BUILD_WITH_SSL=%~4"

if "%BUILD_TYPE%"=="" set "BUILD_TYPE=Release"
if "%BUILD_SAMPLES%"=="" set "BUILD_SAMPLES=FALSE"
if "%BUILD_WITH_SSL%"=="" set "BUILD_WITH_SSL=FALSE"

:: =====================================================
:: 固定路径
:: =====================================================
set "PROJECT_DIR=C:\Users\Administrator\Desktop\paho.mqtt.cpp"
set "PAHO_C_INSTALL=C:\Users\Administrator\Desktop\build\paho-c\%BUILD_TYPE%"

:: =====================================================
:: 检查 paho-c
:: =====================================================
if not exist "%PAHO_C_INSTALL%\include" (
    echo [ERROR] paho-c not found:
    echo %PAHO_C_INSTALL%
    exit /b 1
)

:: =====================================================
:: 进入 cpp
:: =====================================================
pushd "%PROJECT_DIR%"

:: =====================================================
:: 输出目录
:: =====================================================
set "BUILD_DIR=build-x64\%BUILD_TYPE%"
set "INSTALL_PATH=%INSTALL_PREFIX%\paho-cpp\%BUILD_TYPE%"

:: =====================================================
:: CMake generator
:: =====================================================
set "GENERATOR=Visual Studio 16 2019"

echo.
echo ==========================================
echo PAHO-C PATH   = %PAHO_C_INSTALL%
echo INSTALL PATH  = %INSTALL_PATH%
echo BUILD TYPE    = %BUILD_TYPE%
echo BUILD MODE    = SHARED (DLL)
echo ==========================================
echo.

:: =====================================================
:: CMake configure(关键修复)
:: =====================================================
cmake ^
-G "%GENERATOR%" ^
-A x64 ^
-B "%BUILD_DIR%" ^
-DCMAKE_INSTALL_PREFIX="%INSTALL_PATH%" ^
-DPAHO_BUILD_SAMPLES=%BUILD_SAMPLES% ^
-DPAHO_WITH_SSL=%BUILD_WITH_SSL% ^
-DBUILD_SHARED_LIBS=ON ^
-DCMAKE_PREFIX_PATH="%PAHO_C_INSTALL%"

if errorlevel 1 (
    echo [ERROR] configure failed
    popd
    exit /b 1
)

:: =====================================================
:: build + install
:: =====================================================
cmake --build "%BUILD_DIR%" ^
--config %BUILD_TYPE% ^
--target install

if errorlevel 1 (
    echo [ERROR] build failed
    popd
    exit /b 1
)

popd

:: =====================================================
:: success
:: =====================================================
echo.
echo ==========================================
echo BUILD SUCCESS (DLL VERSION)
echo ==========================================
echo paho-cpp install:
echo %INSTALL_PATH%
echo ==========================================

pause
cpp 复制代码
打开Developer Command Prompt for VS 20xx
​​​​​​​终端上执行:
C:\Users\Administrator\Desktop\Mqtt-Script\paho-cpp-build-x64.bat C:\Users\Administrator\Desktop\build2  Release TRUE TRUE

C:\Users\Administrator\Desktop\Mqtt-Script\paho-cpp-build-x64.bat是我bat脚本所在路径,
C:\Users\Administrator\Desktop\build2是编译后的安装目录

注意:使用cpp库时,依赖c库,所以使用时把c库的lib放在cpp的lib目录下

相关推荐
今夕资源网11 小时前
本地SSL证书生成工具本地 HTTPS 配置不用再敲命令:CertTool 一站式管理自签证书与 Hosts
网络协议·https·ssl·ssl证书生成·ssl本地测试证书
物联网IoT小易1 天前
MQTT消息为什么会重复、丢失或延迟?QoS、离线消息与重连机制详解
物联网·mqtt·消息队列·边缘计算·mqtt协议·物联网平台
瓦格哈儿2 天前
删掉旧 SSL 证书会影响线上业务吗?风险点梳理
网络协议·https·ssl
姚不倒3 天前
HAProxy 系列(二):健康检查与 SSL 卸载 — 保障可用性与性能
运维·网络·网络协议·ssl·haproxy
StevenSurpass3 天前
智能工厂场景:FastPrintAgent 分布式打印中间件落地应用方案
分布式·mqtt·http·中间件·打印·fastreport
MyFreeIT4 天前
Let‘s Encrypt SSL 製作免費證書
网络协议·https·ssl
00后程序员张4 天前
Android证书绑定抓包失败?Android SSL Pinning绕过实战指南
android·网络协议·计算机网络·网络安全·adb·https·ssl
武帝为此5 天前
【TLS SSL 介绍】
网络·网络协议·ssl
虎王物联8 天前
PHP Swoole实现物联网MQTT数据订阅与WebSocket实时推送
物联网·mqtt·websocket·php·swoole
吠品8 天前
SQL Server 版本查询的几种实用方法
数据库·网络协议·ssl