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目录下

相关推荐
agathakuan3 天前
Wireshark 解密並導出TLS 1.2 / TLS 1.3 明文的方法(可控制 Client 端)
c语言·wireshark·ssl·openwrt
huainingning3 天前
防火墙重启后ssl登录提示证书过期临时解决方法
linux·服务器·ssl
Geek-Chow4 天前
ALB SSL policy conflict (AWS Load Balancer Controller)
网络协议·ssl·aws
GlobalSign数字证书4 天前
自动化时代,如何高效部署SSL证书?
运维·自动化·ssl
molaifeng7 天前
深入 MQTT 协议底层:构建可靠物联网通信的关键机制
mqtt·iot
山顶夕景8 天前
【MAE】音频自监督训练Masked Autoencoders that Listen
音视频·ssl·多模态·自监督·mae
froyoisle8 天前
阿里云免费 SSL 证书申请及配置
服务器·阿里云·ssl·网站
VX_189 天前
域名SSL证书监测平台
网络·网络协议·ssl
REDcker9 天前
用 eBPF 观测 SSL/TLS 明文:原理、钩点与边界
网络·网络协议·ssl
绘梨衣54710 天前
ssl-bad-ecpoint-经验帖
网络·网络协议·ssl