Mosquitto-1.5.0开始源码新增了epoll机制,如何编译实现?

240 阅读1分钟

好消息!Mosquitto-1.5源码新增了epoll机制。那我们应该如何使用呢?

假设项目是以CMakeLists.txt 构建的.

代码中通过宏 USE_MACRO 作为区分.

...

#ifdef USE_MACRO

...

#endif

我们可以通过在项目中的CMakeLists.txt 中添加如下代码控制代码的开启和关闭.

+ OPTION(USE_MACRO

+  "Build the project using macro"

+  OFF)

+ IF(USE_MACRO)

+  add_definitions("-DUSE_MACRO")

+ endif(USE_MACRO)

1、修改配置文件

\Mosquitto-1.5\CMakeLists.txt,手动新增以下内容

#firecat add
option(WITH_EPOLL "Include epoll support?" ON)
if (${WITH_EPOLL} STREQUAL ON)
    add_definitions("-DWITH_EPOLL")
endif (${WITH_EPOLL} STREQUAL ON)

 

2、使用CMake编译源码,如果没有安装,请参考:CentOS 7安装cmake 2.8.12.2

在路径\Mosquitto-1.5\执行

cmake .

make

生成的可执行文件在\Mosquitto-1.5\src

 

 

---

题外话:

#ifdef WITH_BROKER
WITH_WEBSOCKETS
WITH_BRIDGE

定义了表示服务器,未定义表示客户端。这个宏在使用库libmosquitto.so时会有区别。

庆幸的是,\Mosquitto-1.5\src\CMakeLists.txt文件里面对这几个宏做了特殊处理,当服务器编译时,会使能这些宏;当客户端编译时,则不使能。

作为服务器时,默认值,WITH_BROKER和WITH_BRIDGE是开启的,WITH_WEBSOCKETS未开启。