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

相关推荐
HelloWorld工程师4 小时前
新手如何快速申请SSL通配符证书...
网络协议·https·ssl
姚不倒9 小时前
F5 SSL Profile 证书卸载深入篇
运维·网络协议·负载均衡·ssl·f5
ControlRookie15 小时前
源码加更03_单连接槽位、TCP 字节流和发送队列
mqtt·plc·工业通信·codesys
大侠锅锅2 天前
第 2 篇:MQTT 协议深度解析——物联网通信为什么选它
物联网·mqtt
墨香幽梦客4 天前
数据安全三板斧:Https/SSL加密+PCI-DSS合规+HIPAA医疗数据防护
网络协议·https·ssl
程序员mine20 天前
HTTPS-TLS加密与证书完全指南(中)
网络协议·https·ssl
EMQX20 天前
跨越 OT 与 IT 的鸿沟:15 分钟实现 NeuronEX 与 Azure Fabric 联动
mqtt·fabric·neuronex
开发者联盟league21 天前
pnpm install报错ERR_SSL_PACKET_LENGTH_TOO_LONG问题解决
网络·网络协议·ssl
欢乐熊嵌入式编程21 天前
嵌入式 + MQTT:数据上传到阿里云实战(从0到1完整教程)
stm32·单片机·mqtt·freertos·嵌入式架构·efr32