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

相关推荐
IT规划师18 小时前
MQTT实战 - QoS 0-1-2 到底怎么选?一张图看懂(四)
物联网·mqtt·.net core·iot·qos
徐同保1 天前
免费ssl证书全流程AI配置(含七牛云cdn)
网络·网络协议·ssl
IT规划师2 天前
MQTT实战 - Topic设计12条军规:90%的消息混乱都源于命名错误(三)
物联网·mqtt·topic·.net core
北风toto2 天前
Windows 下用 OpenSSL 生成 SSL 密钥并配置 Nginx 教程
windows·nginx·ssl
zxanz13 天前
一张 SSL 证书,如何降低业务流量劫持与数据泄露风险
网络·网络协议·ssl
杰克说3 天前
物联网消息协议MQTT详解
物联网·mqtt·信息与通信·通信协议
梦帮科技4 天前
Web 漏洞攻防深度:WAF 规则逃逸技术(畸形分块传输、双重编码)与对抗加固
linux·前端·网络安全·ssl·web
IT规划师4 天前
MQTT实战 - MQTT vs HTTP:为什么你的物联网项目上线就崩?(二)
物联网·mqtt·.net core·http文件
zxanz15 天前
该怎么去选择 SSL 证书来使用?有什么方法不
服务器·网络协议·ssl
mingbaiceping5 天前
复旦-华盛顿大学EMBA:2026年免联考申请条件详解
网络协议·https·ssl