Commit e0b1fe64680a6023bc821d9ac2288f980de2c559
1 parent
7ecdab62
Fixed script.
Showing
5 changed files
with
98 additions
and
28 deletions
CMakeLists.txt
| ... | ... | @@ -13,10 +13,10 @@ endif() |
| 13 | 13 | |
| 14 | 14 | # ============================================================================== |
| 15 | 15 | # Check to see if there is versioning information available |
| 16 | -if(IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/osdev_versioning/cmake) | |
| 17 | - LIST(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/osdev_versioning/cmake) | |
| 18 | -elseif(IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../osdev_versioning/cmake) | |
| 19 | - LIST(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../osdev_versioning/cmake) | |
| 16 | +if(IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/versioning) | |
| 17 | + LIST(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/versioning/cmake) | |
| 18 | +elseif(IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../versioning) | |
| 19 | + LIST(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../versioning/cmake) | |
| 20 | 20 | else() |
| 21 | 21 | message( FATAL_ERROR "No ${CURRENT_SOURCE_DIR}/osdev_versioning directory found. Did you run the submodules script?" ) |
| 22 | 22 | endif() | ... | ... |
README.md
| 1 | +MQTT-CPP | |
| 2 | +======== | |
| 3 | + | |
| 4 | +Modern, asynchronous and fast C++ client for paho-mqtt ( paho-c ). | |
| 5 | + | |
| 6 | +**Features:** | |
| 7 | +* Simple and clean A-synchronous API. ( Connect, publish, subscribe ). | |
| 8 | +* Thread-safe. Use multiple topics in multiple threads.. | |
| 9 | +* Callbacks can be lambdas, class methods, bind expressions, or any [std::function] | |
| 10 | +* Fully autonomous reconnecting | |
| 11 | + | |
| 12 | +# Dependencies | |
| 13 | +The only dependency is to libpaho-mqtt3a.so. CHanges are there is a version for your platform ( Debian, Fedora, CentOS ). | |
| 14 | +Just check your package manager for the correct package-name. | |
| 15 | + | |
| 16 | +# Tutorial | |
| 17 | +* Clone this repository : | |
| 18 | + ``` | |
| 19 | + git clone http://gitlab.osdev.nl/open_source/mqtt-cpp.git | |
| 20 | + ``` | |
| 21 | + * Change to the repo and run the submodules script : | |
| 22 | + ``` | |
| 23 | + $ cd mqtt-cpp | |
| 24 | + $ scripts/setup_submodules -i | |
| 25 | + ``` | |
| 26 | + This will add the cmake directory and versioning. | |
| 27 | + * Create a build directory and start the build. | |
| 28 | + ``` | |
| 29 | + $ mkdir build | |
| 30 | + $ cd build | |
| 31 | + $ cmake ../ | |
| 32 | + $ gmake | |
| 33 | + ``` | |
| 34 | +And you're all set. In build/bin there are two examples, test_mqtt_pu and test_mqtt_sub. Have a broker running, | |
| 35 | +like mosquitto or flashmq capable of accepting anonymous connections. Start the "sub" part and couple of moments | |
| 36 | +later the "pub" part. If all went well, you should see two screens in sync running. | |
| 37 | +One is sending, the other is receiveing. | ... | ... |
scripts/setup_submodules
| 1 | -#!/bin/bash | |
| 1 | +#!/bin/bash -x | |
| 2 | 2 | # ================= |
| 3 | 3 | # = Do not chenge. |
| 4 | 4 | # ================= |
| 5 | 5 | GIT_URL_SUBS="http://gitlab.osdev.nl/open_source" |
| 6 | -TOP_REPO="-1" | |
| 6 | +FUNC_RESULT="" | |
| 7 | 7 | |
| 8 | -function print_usage_exit() { | |
| 8 | +function print_usage_exit() | |
| 9 | +{ | |
| 9 | 10 | echo "Usage $0 -i|--install|-u|--update" |
| 10 | 11 | echo " -i or --install Install the submodules mentioned in the submodules.list" |
| 11 | 12 | echo " -u or --update Update the submodules mentioned in the submodules.list" |
| ... | ... | @@ -13,45 +14,55 @@ function print_usage_exit() { |
| 13 | 14 | exit 1 |
| 14 | 15 | } |
| 15 | 16 | |
| 16 | -function check_top_or_sub() { | |
| 17 | +function check_top_or_sub() | |
| 18 | +{ | |
| 17 | 19 | # This function checks if we're the top-repository. |
| 18 | 20 | # In that case we need the submodules.. If we're already a submodule, |
| 19 | 21 | # we simply exit this script with a message |
| 20 | - if [ -d ./.git ]; then | |
| 21 | - return 1 | |
| 22 | - elif [ -d ../.git ]; then | |
| 23 | - if [ -f ../.submodules ]; then | |
| 22 | + if [ -e ./.git ]; then | |
| 23 | + FUNC_RESULT="1" | |
| 24 | + return | |
| 25 | + elif [ -e ../.git ]; then | |
| 26 | + if [ -e ../.submodules ]; then | |
| 24 | 27 | echo "Seems like we're already a submodule. Nothing to do here." |
| 25 | - return 0 | |
| 28 | + FUNC_RESULT="0" | |
| 29 | + return | |
| 26 | 30 | fi |
| 27 | 31 | fi |
| 28 | - return 0 | |
| 32 | + FUNC_RESULT="0" | |
| 33 | + return | |
| 29 | 34 | } |
| 30 | 35 | |
| 31 | -function check_working_dir() { | |
| 36 | +function check_working_dir() | |
| 37 | +{ | |
| 32 | 38 | # Check if we're in the top-level directory of our repository. |
| 33 | 39 | if [ -f ./scripts/submodules.list ]; then |
| 34 | 40 | # We're good to go |
| 35 | - return 1 | |
| 41 | + FUNC_RESULT="1" | |
| 42 | + return | |
| 36 | 43 | fi |
| 37 | - return 0 | |
| 44 | + FUNC_RESULT="0" | |
| 45 | + return | |
| 38 | 46 | } |
| 39 | 47 | |
| 40 | -function read_submodules() { | |
| 48 | +function read_submodules() | |
| 49 | +{ | |
| 41 | 50 | if [ -e ./scripts/submodules.list ]; then |
| 42 | 51 | source ./scripts/submodules.list |
| 43 | 52 | fi |
| 44 | 53 | } |
| 45 | 54 | |
| 46 | -function add_submodules() { | |
| 55 | +function add_submodules() | |
| 56 | +{ | |
| 47 | 57 | for SUB_MODULE in ${SUB_MODULES} |
| 48 | 58 | do |
| 49 | - git submodule add -f ${GIT_URL_SUBS}/${SUB_MODULE} ${SUB_MODULE} | |
| 50 | - git config submodule.${SUB_MODULE}.url ${GIT_URL_SUBS}/${SUB_MODULE} | |
| 59 | + git submodule add -f ${GIT_URL_SUBS}/${SUB_MODULE}.git ${SUB_MODULE} | |
| 60 | + git config submodule.${SUB_MODULE}.url ${GIT_URL_SUBS}/${SUB_MODULE}.git | |
| 51 | 61 | done |
| 52 | 62 | } |
| 53 | 63 | |
| 54 | -function get_submodules() { | |
| 64 | +function get_submodules() | |
| 65 | +{ | |
| 55 | 66 | git submodule update --init --recursive |
| 56 | 67 | } |
| 57 | 68 | |
| ... | ... | @@ -62,14 +73,14 @@ function update_submodules() { |
| 62 | 73 | # ============================================================================= |
| 63 | 74 | # == T H E M A I N E N T R Y O F T H I S S C R I P T == |
| 64 | 75 | # ============================================================================= |
| 65 | -RESULT=check_top_or_sub() | |
| 66 | -if [ $RESULT -eq 0 ]; then | |
| 76 | +check_top_or_sub | |
| 77 | +if [ "${FUNC_RESULT}" == "0" ]; then | |
| 67 | 78 | echo "Seems like we're a submodule already or not part of a repository." |
| 68 | 79 | exit 0 |
| 69 | 80 | fi |
| 70 | 81 | |
| 71 | -RESULT=check_working_dir() | |
| 72 | -if [ $RESULT -eq 0 ]; then | |
| 82 | +check_working_dir | |
| 83 | +if [ "${FUNC_RESULT}" == "0" ]; then | |
| 73 | 84 | echo "Go to the top of this repository and type : scripts/setup_submodules [-i|--install]" |
| 74 | 85 | exit 0 |
| 75 | 86 | fi | ... | ... |
scripts/submodules.list
src/CMakeLists.txt
| 1 | 1 | cmake_minimum_required(VERSION 3.12) |
| 2 | -LIST(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../cmake) | |
| 2 | +# ============================================================================== | |
| 3 | +# Check to see if we're a submodule or top-repo. | |
| 4 | +if(IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../cmake) | |
| 5 | + message( STATUS "Looks like we're a single module" ) | |
| 6 | + LIST(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../cmake) | |
| 7 | +elseif(IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../../cmake) | |
| 8 | + message( STATUS "Looks like we're a submodule" ) | |
| 9 | + LIST(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../cmake) | |
| 10 | +else() | |
| 11 | + message( FATAL_ERROR "No cmake directory found. Did you run the submodules script?" ) | |
| 12 | +endif() | |
| 13 | + | |
| 14 | +# ============================================================================== | |
| 15 | +# Check to see if there is versioning information available | |
| 16 | +if(IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../versioning) | |
| 17 | + LIST(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../versioning/cmake) | |
| 18 | +elseif(IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../../versioning) | |
| 19 | + LIST(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../versioning/cmake) | |
| 20 | +else() | |
| 21 | + message( FATAL_ERROR "No ${CURRENT_SOURCE_DIR}/osdev_versioning directory found. Did you run the submodules script?" ) | |
| 22 | +endif() | |
| 23 | +# ============================================================================== | |
| 3 | 24 | include(projectheader) |
| 25 | + | |
| 4 | 26 | project_header(mqtt) |
| 5 | 27 | |
| 6 | 28 | find_package( Boost REQUIRED COMPONENTS regex ) | ... | ... |