竞猜排行 / 2025-11-04 00:58:33
本文介绍不带 SSL/TLS(通常指 HTTPS 的协议加密层),不带 CJSON,带 pthread 的情况下编译 mosquitto;
CMakeLists.txt 脚本的修改
从 官网 下载 mosquitto 源码,并解压
根据下面的描述修改 CMakeLists.txt 脚本
屏蔽 TLS
1
2
+ set (WITH_TLS OFF)
if (WITH_TLS)
屏蔽 CJSON
1
2
3
4
- FIND_PACKAGE(cJSON)
+ #FIND_PACKAGE(cJSON)
+ set (CJSON_FOUND OFF)
if (CJSON_FOUND)
屏蔽 CLIENTS
Windows 平台编译 client_shared.c 会报错(可能是 VS2019 的 CMake 工程对某些写法不支持的原因),所以设置不生成 clients;
1
2
+ set (WITH_CLIENTS OFF)
if (WITH_CLIENTS)
屏蔽 DOCUMENTATION
屏蔽 TLS 后 Linux 平台生成文档会卡住,所以设置不生成文档;
1
2
+ set (DOCUMENTATION OFF)
if (DOCUMENTATION)
多平台编译库文件
Windows 平台
安装 pthreads-w32 库
在 这里 下载最新版本 pthreads-w32-2-9-1-release.zip,解压后拷贝 pthreads-w32-2-9-1-release 目录到 C 盘,并重命名为 pthreads;
确保 CMakeLists.txt 脚本中 WIN32 的 pthread 库路径能正常找到;
解决 pthreads-w32 的 timespec 和 Windows SDK 重定义的问题
修改 C:\pthreads\Pre-built.2\include\pthread.h 文件:
1
2
3
#if !defined( PTHREAD_H )
#define PTHREAD_H
+ #define HAVE_STRUCT_TIMESPEC
VS2019 CMake 工程编译
使用 VS2019 打开 mosquitto 目录下的 CMakeLists.txt;
会在工程目录下多出 .vs 和 out 目录;
等待 cmake 缓存构建完成后,“生成” –> “全部生成”;
C 库文件在 lib 目录,CPP 库文件在 lib/cpp 目录;
Linux 平台
按如下步骤编译:
1
2
3
4
mkdir build
cd build
cmake ..
make
C 库文件在 lib 目录,CPP 库文件在 lib/cpp 目录;
arm32 平台
修改 CMakeLists.txt,设置交叉编译器:
建议紧接着 project(xxx) 后面,即下一行;
1
2
set(CMAKE_C_COMPILER arm-linux-gnueabihf-gcc)
set(CMAKE_CXX_COMPILER arm-linux-gnueabihf-g++)
启动编译
1
2
3
4
mkdir build
cd build
cmake ..
make
C 库文件在 lib 目录,CPP 库文件在 lib/cpp 目录;
Previous
使用 zsh 一个更好用的终端
Next
编译和使用 gdb
弘一法师说:“止语,是上等智慧;止心,是上等修行,就是不断调整自己”turbo c最新安装包下载-turbo c中文版下载-turbo c版本大全