好消息!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未开启。