Использование https://github.com/eclipse/paho.mqtt.cpp со сборкой cmake - PullRequest
0 голосов
/ 26 февраля 2020

Я немного новичок в CMake. Так что это может быть нубский вопрос ..

Я пытаюсь построить cpp проект с CMake. Я хотел бы, чтобы моя программа публиковала sh брокеру mqtt. Я работаю на Linux.

Итак, я установил https://github.com/eclipse/paho.mqtt.cpp и соответствующий c проект, выполнив (рядом)

$ git clone https://github.com/eclipse/paho.mqtt.c.git
$ cd paho.mqtt.c
$ git checkout v1.3.1

$ cmake -Bbuild -H. -DPAHO_WITH_SSL=ON -DPAHO_ENABLE_TESTING=OFF
$ sudo cmake --build build/ --target install
$ sudo ldconfig

согласно документации, а затем делать.

$ git clone https://github.com/eclipse/paho.mqtt.cpp
$ mkdir build
$ cd build
$ cmake ../
$ make
$ sudo make install

, которые все работали нормально без каких-либо ошибок .. Теперь, что я могу поместить в свой собственный файл cmakelists в моем собственном проекте, чтобы я мог использовать библиотеки? Так что я могу сделать.

#include "mqtt/async_client.h"

int main(int argc, char *argv[]){
   std::cout << "Hello World!" << std::endl;
   mqtt::async_client cli(DFLT_ADDRESS, "", 120, PERSIST_DIR);


   return 0;
}

Я попробовал простое.

cmake_minimum_required(VERSION 2.8.9)
project (hello)

find_package(PahoMqttCpp REQUIRED)


add_executable(hello helloworld.cpp)
target_link_libraries(hello ${PAHO_CPP_LIB})

Но этого, похоже, недостаточно ... Я получаю

helloworld.cpp:(.text+0xd3): undefined reference to `mqtt::async_client::~async_client()'

Любой была бы признательна за помощь.

1 Ответ

1 голос
/ 26 февраля 2020

Хорошо, после некоторого копания я нашел правильную запись:

target_link_libraries(hello paho-mqttpp3 paho-mqtt3as)
...