mac os 下 paho.mqtt.cpp 的配置方法
- 先把编译器、CMake装上,我在命令行里敲 gcc 它自己就弹出提示安装一些开发者工具,CMake通过brew install cmake进行安装;
- 编译 paho.mqtt.c,在代码库里创建一个build文件夹,将编译后的程序安装在build/install文件夹中。
git clone https://github.com/eclipse/paho.mqtt.c.git
cd paho.mqtt.c
mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=./install -DPAHO_WITH_SSL=ON
make -j12
make install
cd install
pwd
- 编译paho.mqtt.cpp,注意openssl可能会引用到系统下的,可能会导致无法链接成功。
git clone https://github.com/eclipse/paho.mqtt.cpp.git
- 为了防止 openssl的lib引用成了mac系统下的文件导致编译出错,需要修改cmake/FindPahoMqttC.cmake文件,在第五行后插入如下内容,这个特别指定了lib文件路径:
if(OPENSSL_FOUND)
if(APPLE)
include_directories(/usr/local/Cellar/openssl@1.1/1.1.1d/include)
list(APPEND LIB_LIST /usr/local/Cellar/openssl@1.1/1.1.1d/lib/libssl.dylib)
list(APPEND LIB_LIST /usr/local/Cellar/openssl@1.1/1.1.1d/lib/libcrypto.dylib)
message(STATUS "OpenSSL Version: ${OPENSSL_VERSION} ${OPENSSL_INCLUDE_DIR} ${OPENSSL_LIBRARIES}")
else()
include_directories(${OPENSSL_INCLUDE_DIR})
list(APPEND LIB_LIST ${OPENSSL_LIBRARIES})
message(STATUS "OpenSSL Version: ${OPENSSL_VERSION} ${OPENSSL_INCLUDE_DIR} ${OPENSSL_LIBRARIES}")
endif()
- 可能缺 catch2 包
brew install catch2
mkdir build
cd build
export OPENSSL_ROOT_DIR=/usr/local/Cellar/openssl@1.1/1.1.1d
cmake .. -DCMAKE_INSTALL_PREFIX=./install -DPAHO_BUILD_TESTS=OFF -DCMAKE_PREFIX_PATH=/Users/codefreedom/workspace/sources/paho.mqtt.c/build/install
make -j12
make install
cd install