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

相关推荐
J_bean12 小时前
IOT接入层-阐述物联网四种设备接入方式
mqtt·iot·设备接入·设备直连·网关透传
lupai13 小时前
SSL 证书落地应用与网站安全加固指南
网络协议·安全·ssl
zxanz114 小时前
SSL 证书有哪些类型,怎么选择适合自己使用的?
网络·网络协议·ssl
程序媛之Lemon15 小时前
FluxMQ|面向海量终端的云原生MQTT物联网网关
物联网·mqtt
zxanz11 天前
SSL 证书会影响 GEO 跟 SEO 排名吗?
网络·网络协议·ssl
SL-staff8 天前
MQTT Topic权限越界排查指南:JVS-IOT中系统Topic与自定义Topic的鉴权机制与实操验证
mqtt·嵌入式开发·权限控制·物联网开发·协议分析·鉴权机制·jvs-iot
Lsetea8 天前
Nginx报No required SSL certificate was sent:mTLS客户端证书排查
运维·nginx·https·ssl·openssl
其实防守也摸鱼11 天前
DeepSeek Harness 开源贡献手记:从入门到合入主线
服务器·数据库·windows·https·ssl
其实防守也摸鱼11 天前
堆叠注入(Stacked Injection)详解
服务器·数据库·windows·https·ssl
StevenSurpass11 天前
打印业务彻底解耦:FastPrintAgent 统一 JSON 模型 + FastReport 引擎的设计与落地
mqtt·http·中间件·打印·fastreport