Repository Summary
| Description | |
| Checkout URI | https://github.com/eclipse/paho.mqtt.cpp.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-02-24 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
README
Eclipse Paho MQTT C++ Client Library
This repository contains the source code for the Eclipse Paho MQTT C++ client library for memory-managed operating systems such as Linux, MacOS, and Windows.
This code builds a library which enables Modern C++ applications (C++17 and beyond) to connect to an MQTT broker, publish messages, subscribe to topics, and receive messages from the broker.
The library has the following features:
- Support for MQTT v3.1, v3.1.1, and v5.
- Network Transports:
- Standard TCP
- UNIX-domain sockets
- Secure sockets with SSL/TLS
- WebSockets
- Secure and insecure
- Proxy support
- Message persistence
- User configurable
- Built-in File persistence
- User-defined key/value persistence easy to implement
- Automatic Reconnect
- Offline Buffering
- High Availability
- Blocking and non-blocking APIs
- Modern C++ interface (C++17)
This code requires the Paho C library by Ian Craggs, et al., specifically version 1.3.16 or possibly later.
Latest News
To keep up with the latest announcements for this project, or to ask questions:
Mastodon: @fpagliughi@fosstodon.org
Email: Eclipse Paho Mailing List
What’s New in v1.6.x
The v1.6.x is tested and builds around the latest Paho C v1.3.16, which has a number of performance enhancements and reduces a number of latency issues in connecting and publishing. Some additional updates:
- Bumped Paho C submodule to v1.3.16 and updated directory name to externals/paho.mqtt.c
- Some significant performance increases (lower latency) for connect and publish
- Fixes to topic matching:
- Fixed
topic_matcherandtopic_filterto properly match parent with multi-level (‘#’) wildcard. - Slight optimization of
topic_filterto do simple string comparison if the filter does not contain wildcards. - Prevent undefined behaviour on empty topic matching
- Fixed
- Set a minimum version for Paho C in the CMake file.
- Debian .deb file properly versioned, and adds the architecture to the .deb file name.
- Fixed post-reconnect crash in the sync
client
For the full list of updates in each release, see the CHANGELOG.
Contributing
Contributions to this project are gladly welcomed and appreciated. Before submitting a Pull Request, please keep three things in mind:
- This is an official Eclipse project, so it is required that all contributors sign an Eclipse Contributor Agreement (ECA)
- Please submit all Pull Requests against the develop branch (not master).
- Please sign all commits.
For full details, see CONTRIBUTING.md.
Building from source
As of v1.5, the Paho C++ library uses C++17 features, thus requiring a fully compliant C++17 compiler. Some of the more common compilers that can be used, depending on the target platform, are:
- GCC v8 or later
- clang v5 or later
- Visual Studio 2017 15.8 (MSVC 19.15) or later
CMake is a cross-platform build system suitable for Unix and non-Unix platforms such as Microsoft Windows. It is the only supported build system. The current supported minimum version is:
- cmake v3.13
The Paho C++ library requires the Paho C library, v1.3.16 or greater to be built and installed. That can be done before building this library, or it can be done here using the CMake PAHO_WITH_MQTT_C build option to build both libraries at the same time. This also guarantees that a proper version of the C library is used, and that it is build with compatible options.
Build Options
CMake allows for options to direct the build. The following are specific to Paho C++:
| Variable | Default Value | Description |
|---|---|---|
| PAHO_BUILD_SHARED | TRUE (*nix), FALSE (Win32) | Whether to build the shared library |
| PAHO_BUILD_STATIC | FALSE (*nix), TRUE (Win32) | Whether to build the static library |
| PAHO_WITH_SSL | TRUE (*nix), FALSE (Win32) | Whether to build SSL/TLS support into the library |
| PAHO_BUILD_DOCUMENTATION | FALSE | Create the HTML API documentation (requires Doxygen) |
| PAHO_BUILD_EXAMPLES | FALSE | Whether to build the example programs |
| PAHO_BUILD_TESTS | FALSE | Build the unit tests. (Requires Catch2) |
| PAHO_BUILD_DEB_PACKAGE | FALSE | Flag that configures cpack to build a Debian/Ubuntu package |
| PAHO_WITH_MQTT_C | FALSE | Whether to build the bundled Paho C library |
Enabling PAHO_WITH_MQTT_C builds and links in the Paho C library using compatible build options. If this is enabled, it passes the PAHO_WITH_SSL option to the C library, and also sets the options PAHO_HIGH_PERFORMANCE and PAHO_WITH_UNIX_SOCKETS for the C lib. These can be disabled in the cache before building if desired.
In addition, the C++ build might commonly use CMAKE_PREFIX_PATH to help the build system find the location of the Paho C library if it was built separately.
Build the Paho C++ and Paho C libraries together
The quickest and easiest way to build Paho C++ is to build it together with Paho C in a single step using the included Git submodule.
This requires the CMake option PAHO_WITH_MQTT_C set.
File truncated at 100 lines see the full file
CONTRIBUTING
Contributing to Paho
Thanks for your interest in this project!
You can contribute bugfixes and new features by sending pull requests through GitHub.
Legal
In order for your contribution to be accepted, it must comply with the Eclipse Foundation IP policy.
Please read the Eclipse Foundation policy on accepting contributions via Git.
- Sign the Eclipse ECA
- Register for an Eclipse Foundation User ID. You can register here.
- Log into the Eclipse projects forge, and click on ‘Eclipse Contributor Agreement’.
- Go to your account settings and add your GitHub username to your account.
- Make sure that you sign-off your Git commits in the following format:
Signed-off-by: Alex Smith <alexsmith@nowhere.com>
This is usually at the bottom of the commit message. You can automate this by adding the ‘-s’ flag when you make the commits. e.g.
```git commit -s -m “Adding a cool feature”
4. Ensure that the email address that you make your commits with is the same one you used to sign up to the Eclipse Foundation website with.
## Contributing a change
1. [Fork the repository on GitHub](https://github.com/eclipse/paho.mqtt.cpp/fork)
2. Clone the forked repository onto your computer:
``` git clone https://github.com/<your username>/paho.mqtt.cpp.git
- Create a new branch from the latest
``` branch with ```git checkout -b YOUR_BRANCH_NAME origin/develop - Make your changes
- If developing a new feature, make sure to include unit tests.
- Ensure that all new and existing tests pass.
- Commit the changes into the branch:
git commit -sMake sure that your commit message is meaningful and describes your changes correctly. - If you have a lot of commits for the change, squash them into a single / few commits.
- Push the changes in your branch to your forked repository.
- Finally, go to https://github.com/eclipse/paho.mqtt.cpp and create a pull request from your “YOUR_BRANCH_NAME” branch to the
developone to request review and merge of the commits in your pushed branch.
What happens next depends on the content of the patch. If it is 100% authored by the contributor and is less than 1000 lines (and meets the needs of the project), then it can be pulled into the main repository. If not, more steps are required. These are detailed in the legal process poster.
Developer resources:
Information regarding source code management, builds, coding standards, and more.
Contact:
Contact the project developers via the project’s development mailing list.
Search for bugs:
This project uses GitHub Issues here: github.com/eclipse/paho.mqtt.cpp/issues to track ongoing development and issues.
Create a new bug:
Be sure to search for existing bugs before you create another one. Remember that contributions are always welcome!
Repository Summary
| Description | |
| Checkout URI | https://github.com/eclipse/paho.mqtt.cpp.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-02-24 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
README
Eclipse Paho MQTT C++ Client Library
This repository contains the source code for the Eclipse Paho MQTT C++ client library for memory-managed operating systems such as Linux, MacOS, and Windows.
This code builds a library which enables Modern C++ applications (C++17 and beyond) to connect to an MQTT broker, publish messages, subscribe to topics, and receive messages from the broker.
The library has the following features:
- Support for MQTT v3.1, v3.1.1, and v5.
- Network Transports:
- Standard TCP
- UNIX-domain sockets
- Secure sockets with SSL/TLS
- WebSockets
- Secure and insecure
- Proxy support
- Message persistence
- User configurable
- Built-in File persistence
- User-defined key/value persistence easy to implement
- Automatic Reconnect
- Offline Buffering
- High Availability
- Blocking and non-blocking APIs
- Modern C++ interface (C++17)
This code requires the Paho C library by Ian Craggs, et al., specifically version 1.3.16 or possibly later.
Latest News
To keep up with the latest announcements for this project, or to ask questions:
Mastodon: @fpagliughi@fosstodon.org
Email: Eclipse Paho Mailing List
What’s New in v1.6.x
The v1.6.x is tested and builds around the latest Paho C v1.3.16, which has a number of performance enhancements and reduces a number of latency issues in connecting and publishing. Some additional updates:
- Bumped Paho C submodule to v1.3.16 and updated directory name to externals/paho.mqtt.c
- Some significant performance increases (lower latency) for connect and publish
- Fixes to topic matching:
- Fixed
topic_matcherandtopic_filterto properly match parent with multi-level (‘#’) wildcard. - Slight optimization of
topic_filterto do simple string comparison if the filter does not contain wildcards. - Prevent undefined behaviour on empty topic matching
- Fixed
- Set a minimum version for Paho C in the CMake file.
- Debian .deb file properly versioned, and adds the architecture to the .deb file name.
- Fixed post-reconnect crash in the sync
client
For the full list of updates in each release, see the CHANGELOG.
Contributing
Contributions to this project are gladly welcomed and appreciated. Before submitting a Pull Request, please keep three things in mind:
- This is an official Eclipse project, so it is required that all contributors sign an Eclipse Contributor Agreement (ECA)
- Please submit all Pull Requests against the develop branch (not master).
- Please sign all commits.
For full details, see CONTRIBUTING.md.
Building from source
As of v1.5, the Paho C++ library uses C++17 features, thus requiring a fully compliant C++17 compiler. Some of the more common compilers that can be used, depending on the target platform, are:
- GCC v8 or later
- clang v5 or later
- Visual Studio 2017 15.8 (MSVC 19.15) or later
CMake is a cross-platform build system suitable for Unix and non-Unix platforms such as Microsoft Windows. It is the only supported build system. The current supported minimum version is:
- cmake v3.13
The Paho C++ library requires the Paho C library, v1.3.16 or greater to be built and installed. That can be done before building this library, or it can be done here using the CMake PAHO_WITH_MQTT_C build option to build both libraries at the same time. This also guarantees that a proper version of the C library is used, and that it is build with compatible options.
Build Options
CMake allows for options to direct the build. The following are specific to Paho C++:
| Variable | Default Value | Description |
|---|---|---|
| PAHO_BUILD_SHARED | TRUE (*nix), FALSE (Win32) | Whether to build the shared library |
| PAHO_BUILD_STATIC | FALSE (*nix), TRUE (Win32) | Whether to build the static library |
| PAHO_WITH_SSL | TRUE (*nix), FALSE (Win32) | Whether to build SSL/TLS support into the library |
| PAHO_BUILD_DOCUMENTATION | FALSE | Create the HTML API documentation (requires Doxygen) |
| PAHO_BUILD_EXAMPLES | FALSE | Whether to build the example programs |
| PAHO_BUILD_TESTS | FALSE | Build the unit tests. (Requires Catch2) |
| PAHO_BUILD_DEB_PACKAGE | FALSE | Flag that configures cpack to build a Debian/Ubuntu package |
| PAHO_WITH_MQTT_C | FALSE | Whether to build the bundled Paho C library |
Enabling PAHO_WITH_MQTT_C builds and links in the Paho C library using compatible build options. If this is enabled, it passes the PAHO_WITH_SSL option to the C library, and also sets the options PAHO_HIGH_PERFORMANCE and PAHO_WITH_UNIX_SOCKETS for the C lib. These can be disabled in the cache before building if desired.
In addition, the C++ build might commonly use CMAKE_PREFIX_PATH to help the build system find the location of the Paho C library if it was built separately.
Build the Paho C++ and Paho C libraries together
The quickest and easiest way to build Paho C++ is to build it together with Paho C in a single step using the included Git submodule.
This requires the CMake option PAHO_WITH_MQTT_C set.
File truncated at 100 lines see the full file
CONTRIBUTING
Contributing to Paho
Thanks for your interest in this project!
You can contribute bugfixes and new features by sending pull requests through GitHub.
Legal
In order for your contribution to be accepted, it must comply with the Eclipse Foundation IP policy.
Please read the Eclipse Foundation policy on accepting contributions via Git.
- Sign the Eclipse ECA
- Register for an Eclipse Foundation User ID. You can register here.
- Log into the Eclipse projects forge, and click on ‘Eclipse Contributor Agreement’.
- Go to your account settings and add your GitHub username to your account.
- Make sure that you sign-off your Git commits in the following format:
Signed-off-by: Alex Smith <alexsmith@nowhere.com>
This is usually at the bottom of the commit message. You can automate this by adding the ‘-s’ flag when you make the commits. e.g.
```git commit -s -m “Adding a cool feature”
4. Ensure that the email address that you make your commits with is the same one you used to sign up to the Eclipse Foundation website with.
## Contributing a change
1. [Fork the repository on GitHub](https://github.com/eclipse/paho.mqtt.cpp/fork)
2. Clone the forked repository onto your computer:
``` git clone https://github.com/<your username>/paho.mqtt.cpp.git
- Create a new branch from the latest
``` branch with ```git checkout -b YOUR_BRANCH_NAME origin/develop - Make your changes
- If developing a new feature, make sure to include unit tests.
- Ensure that all new and existing tests pass.
- Commit the changes into the branch:
git commit -sMake sure that your commit message is meaningful and describes your changes correctly. - If you have a lot of commits for the change, squash them into a single / few commits.
- Push the changes in your branch to your forked repository.
- Finally, go to https://github.com/eclipse/paho.mqtt.cpp and create a pull request from your “YOUR_BRANCH_NAME” branch to the
developone to request review and merge of the commits in your pushed branch.
What happens next depends on the content of the patch. If it is 100% authored by the contributor and is less than 1000 lines (and meets the needs of the project), then it can be pulled into the main repository. If not, more steps are required. These are detailed in the legal process poster.
Developer resources:
Information regarding source code management, builds, coding standards, and more.
Contact:
Contact the project developers via the project’s development mailing list.
Search for bugs:
This project uses GitHub Issues here: github.com/eclipse/paho.mqtt.cpp/issues to track ongoing development and issues.
Create a new bug:
Be sure to search for existing bugs before you create another one. Remember that contributions are always welcome!
Repository Summary
| Description | |
| Checkout URI | https://github.com/eclipse/paho.mqtt.cpp.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-02-24 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
README
Eclipse Paho MQTT C++ Client Library
This repository contains the source code for the Eclipse Paho MQTT C++ client library for memory-managed operating systems such as Linux, MacOS, and Windows.
This code builds a library which enables Modern C++ applications (C++17 and beyond) to connect to an MQTT broker, publish messages, subscribe to topics, and receive messages from the broker.
The library has the following features:
- Support for MQTT v3.1, v3.1.1, and v5.
- Network Transports:
- Standard TCP
- UNIX-domain sockets
- Secure sockets with SSL/TLS
- WebSockets
- Secure and insecure
- Proxy support
- Message persistence
- User configurable
- Built-in File persistence
- User-defined key/value persistence easy to implement
- Automatic Reconnect
- Offline Buffering
- High Availability
- Blocking and non-blocking APIs
- Modern C++ interface (C++17)
This code requires the Paho C library by Ian Craggs, et al., specifically version 1.3.16 or possibly later.
Latest News
To keep up with the latest announcements for this project, or to ask questions:
Mastodon: @fpagliughi@fosstodon.org
Email: Eclipse Paho Mailing List
What’s New in v1.6.x
The v1.6.x is tested and builds around the latest Paho C v1.3.16, which has a number of performance enhancements and reduces a number of latency issues in connecting and publishing. Some additional updates:
- Bumped Paho C submodule to v1.3.16 and updated directory name to externals/paho.mqtt.c
- Some significant performance increases (lower latency) for connect and publish
- Fixes to topic matching:
- Fixed
topic_matcherandtopic_filterto properly match parent with multi-level (‘#’) wildcard. - Slight optimization of
topic_filterto do simple string comparison if the filter does not contain wildcards. - Prevent undefined behaviour on empty topic matching
- Fixed
- Set a minimum version for Paho C in the CMake file.
- Debian .deb file properly versioned, and adds the architecture to the .deb file name.
- Fixed post-reconnect crash in the sync
client
For the full list of updates in each release, see the CHANGELOG.
Contributing
Contributions to this project are gladly welcomed and appreciated. Before submitting a Pull Request, please keep three things in mind:
- This is an official Eclipse project, so it is required that all contributors sign an Eclipse Contributor Agreement (ECA)
- Please submit all Pull Requests against the develop branch (not master).
- Please sign all commits.
For full details, see CONTRIBUTING.md.
Building from source
As of v1.5, the Paho C++ library uses C++17 features, thus requiring a fully compliant C++17 compiler. Some of the more common compilers that can be used, depending on the target platform, are:
- GCC v8 or later
- clang v5 or later
- Visual Studio 2017 15.8 (MSVC 19.15) or later
CMake is a cross-platform build system suitable for Unix and non-Unix platforms such as Microsoft Windows. It is the only supported build system. The current supported minimum version is:
- cmake v3.13
The Paho C++ library requires the Paho C library, v1.3.16 or greater to be built and installed. That can be done before building this library, or it can be done here using the CMake PAHO_WITH_MQTT_C build option to build both libraries at the same time. This also guarantees that a proper version of the C library is used, and that it is build with compatible options.
Build Options
CMake allows for options to direct the build. The following are specific to Paho C++:
| Variable | Default Value | Description |
|---|---|---|
| PAHO_BUILD_SHARED | TRUE (*nix), FALSE (Win32) | Whether to build the shared library |
| PAHO_BUILD_STATIC | FALSE (*nix), TRUE (Win32) | Whether to build the static library |
| PAHO_WITH_SSL | TRUE (*nix), FALSE (Win32) | Whether to build SSL/TLS support into the library |
| PAHO_BUILD_DOCUMENTATION | FALSE | Create the HTML API documentation (requires Doxygen) |
| PAHO_BUILD_EXAMPLES | FALSE | Whether to build the example programs |
| PAHO_BUILD_TESTS | FALSE | Build the unit tests. (Requires Catch2) |
| PAHO_BUILD_DEB_PACKAGE | FALSE | Flag that configures cpack to build a Debian/Ubuntu package |
| PAHO_WITH_MQTT_C | FALSE | Whether to build the bundled Paho C library |
Enabling PAHO_WITH_MQTT_C builds and links in the Paho C library using compatible build options. If this is enabled, it passes the PAHO_WITH_SSL option to the C library, and also sets the options PAHO_HIGH_PERFORMANCE and PAHO_WITH_UNIX_SOCKETS for the C lib. These can be disabled in the cache before building if desired.
In addition, the C++ build might commonly use CMAKE_PREFIX_PATH to help the build system find the location of the Paho C library if it was built separately.
Build the Paho C++ and Paho C libraries together
The quickest and easiest way to build Paho C++ is to build it together with Paho C in a single step using the included Git submodule.
This requires the CMake option PAHO_WITH_MQTT_C set.
File truncated at 100 lines see the full file
CONTRIBUTING
Contributing to Paho
Thanks for your interest in this project!
You can contribute bugfixes and new features by sending pull requests through GitHub.
Legal
In order for your contribution to be accepted, it must comply with the Eclipse Foundation IP policy.
Please read the Eclipse Foundation policy on accepting contributions via Git.
- Sign the Eclipse ECA
- Register for an Eclipse Foundation User ID. You can register here.
- Log into the Eclipse projects forge, and click on ‘Eclipse Contributor Agreement’.
- Go to your account settings and add your GitHub username to your account.
- Make sure that you sign-off your Git commits in the following format:
Signed-off-by: Alex Smith <alexsmith@nowhere.com>
This is usually at the bottom of the commit message. You can automate this by adding the ‘-s’ flag when you make the commits. e.g.
```git commit -s -m “Adding a cool feature”
4. Ensure that the email address that you make your commits with is the same one you used to sign up to the Eclipse Foundation website with.
## Contributing a change
1. [Fork the repository on GitHub](https://github.com/eclipse/paho.mqtt.cpp/fork)
2. Clone the forked repository onto your computer:
``` git clone https://github.com/<your username>/paho.mqtt.cpp.git
- Create a new branch from the latest
``` branch with ```git checkout -b YOUR_BRANCH_NAME origin/develop - Make your changes
- If developing a new feature, make sure to include unit tests.
- Ensure that all new and existing tests pass.
- Commit the changes into the branch:
git commit -sMake sure that your commit message is meaningful and describes your changes correctly. - If you have a lot of commits for the change, squash them into a single / few commits.
- Push the changes in your branch to your forked repository.
- Finally, go to https://github.com/eclipse/paho.mqtt.cpp and create a pull request from your “YOUR_BRANCH_NAME” branch to the
developone to request review and merge of the commits in your pushed branch.
What happens next depends on the content of the patch. If it is 100% authored by the contributor and is less than 1000 lines (and meets the needs of the project), then it can be pulled into the main repository. If not, more steps are required. These are detailed in the legal process poster.
Developer resources:
Information regarding source code management, builds, coding standards, and more.
Contact:
Contact the project developers via the project’s development mailing list.
Search for bugs:
This project uses GitHub Issues here: github.com/eclipse/paho.mqtt.cpp/issues to track ongoing development and issues.
Create a new bug:
Be sure to search for existing bugs before you create another one. Remember that contributions are always welcome!
Repository Summary
| Description | |
| Checkout URI | https://github.com/eclipse/paho.mqtt.cpp.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-02-24 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
README
Eclipse Paho MQTT C++ Client Library
This repository contains the source code for the Eclipse Paho MQTT C++ client library for memory-managed operating systems such as Linux, MacOS, and Windows.
This code builds a library which enables Modern C++ applications (C++17 and beyond) to connect to an MQTT broker, publish messages, subscribe to topics, and receive messages from the broker.
The library has the following features:
- Support for MQTT v3.1, v3.1.1, and v5.
- Network Transports:
- Standard TCP
- UNIX-domain sockets
- Secure sockets with SSL/TLS
- WebSockets
- Secure and insecure
- Proxy support
- Message persistence
- User configurable
- Built-in File persistence
- User-defined key/value persistence easy to implement
- Automatic Reconnect
- Offline Buffering
- High Availability
- Blocking and non-blocking APIs
- Modern C++ interface (C++17)
This code requires the Paho C library by Ian Craggs, et al., specifically version 1.3.16 or possibly later.
Latest News
To keep up with the latest announcements for this project, or to ask questions:
Mastodon: @fpagliughi@fosstodon.org
Email: Eclipse Paho Mailing List
What’s New in v1.6.x
The v1.6.x is tested and builds around the latest Paho C v1.3.16, which has a number of performance enhancements and reduces a number of latency issues in connecting and publishing. Some additional updates:
- Bumped Paho C submodule to v1.3.16 and updated directory name to externals/paho.mqtt.c
- Some significant performance increases (lower latency) for connect and publish
- Fixes to topic matching:
- Fixed
topic_matcherandtopic_filterto properly match parent with multi-level (‘#’) wildcard. - Slight optimization of
topic_filterto do simple string comparison if the filter does not contain wildcards. - Prevent undefined behaviour on empty topic matching
- Fixed
- Set a minimum version for Paho C in the CMake file.
- Debian .deb file properly versioned, and adds the architecture to the .deb file name.
- Fixed post-reconnect crash in the sync
client
For the full list of updates in each release, see the CHANGELOG.
Contributing
Contributions to this project are gladly welcomed and appreciated. Before submitting a Pull Request, please keep three things in mind:
- This is an official Eclipse project, so it is required that all contributors sign an Eclipse Contributor Agreement (ECA)
- Please submit all Pull Requests against the develop branch (not master).
- Please sign all commits.
For full details, see CONTRIBUTING.md.
Building from source
As of v1.5, the Paho C++ library uses C++17 features, thus requiring a fully compliant C++17 compiler. Some of the more common compilers that can be used, depending on the target platform, are:
- GCC v8 or later
- clang v5 or later
- Visual Studio 2017 15.8 (MSVC 19.15) or later
CMake is a cross-platform build system suitable for Unix and non-Unix platforms such as Microsoft Windows. It is the only supported build system. The current supported minimum version is:
- cmake v3.13
The Paho C++ library requires the Paho C library, v1.3.16 or greater to be built and installed. That can be done before building this library, or it can be done here using the CMake PAHO_WITH_MQTT_C build option to build both libraries at the same time. This also guarantees that a proper version of the C library is used, and that it is build with compatible options.
Build Options
CMake allows for options to direct the build. The following are specific to Paho C++:
| Variable | Default Value | Description |
|---|---|---|
| PAHO_BUILD_SHARED | TRUE (*nix), FALSE (Win32) | Whether to build the shared library |
| PAHO_BUILD_STATIC | FALSE (*nix), TRUE (Win32) | Whether to build the static library |
| PAHO_WITH_SSL | TRUE (*nix), FALSE (Win32) | Whether to build SSL/TLS support into the library |
| PAHO_BUILD_DOCUMENTATION | FALSE | Create the HTML API documentation (requires Doxygen) |
| PAHO_BUILD_EXAMPLES | FALSE | Whether to build the example programs |
| PAHO_BUILD_TESTS | FALSE | Build the unit tests. (Requires Catch2) |
| PAHO_BUILD_DEB_PACKAGE | FALSE | Flag that configures cpack to build a Debian/Ubuntu package |
| PAHO_WITH_MQTT_C | FALSE | Whether to build the bundled Paho C library |
Enabling PAHO_WITH_MQTT_C builds and links in the Paho C library using compatible build options. If this is enabled, it passes the PAHO_WITH_SSL option to the C library, and also sets the options PAHO_HIGH_PERFORMANCE and PAHO_WITH_UNIX_SOCKETS for the C lib. These can be disabled in the cache before building if desired.
In addition, the C++ build might commonly use CMAKE_PREFIX_PATH to help the build system find the location of the Paho C library if it was built separately.
Build the Paho C++ and Paho C libraries together
The quickest and easiest way to build Paho C++ is to build it together with Paho C in a single step using the included Git submodule.
This requires the CMake option PAHO_WITH_MQTT_C set.
File truncated at 100 lines see the full file
CONTRIBUTING
Contributing to Paho
Thanks for your interest in this project!
You can contribute bugfixes and new features by sending pull requests through GitHub.
Legal
In order for your contribution to be accepted, it must comply with the Eclipse Foundation IP policy.
Please read the Eclipse Foundation policy on accepting contributions via Git.
- Sign the Eclipse ECA
- Register for an Eclipse Foundation User ID. You can register here.
- Log into the Eclipse projects forge, and click on ‘Eclipse Contributor Agreement’.
- Go to your account settings and add your GitHub username to your account.
- Make sure that you sign-off your Git commits in the following format:
Signed-off-by: Alex Smith <alexsmith@nowhere.com>
This is usually at the bottom of the commit message. You can automate this by adding the ‘-s’ flag when you make the commits. e.g.
```git commit -s -m “Adding a cool feature”
4. Ensure that the email address that you make your commits with is the same one you used to sign up to the Eclipse Foundation website with.
## Contributing a change
1. [Fork the repository on GitHub](https://github.com/eclipse/paho.mqtt.cpp/fork)
2. Clone the forked repository onto your computer:
``` git clone https://github.com/<your username>/paho.mqtt.cpp.git
- Create a new branch from the latest
``` branch with ```git checkout -b YOUR_BRANCH_NAME origin/develop - Make your changes
- If developing a new feature, make sure to include unit tests.
- Ensure that all new and existing tests pass.
- Commit the changes into the branch:
git commit -sMake sure that your commit message is meaningful and describes your changes correctly. - If you have a lot of commits for the change, squash them into a single / few commits.
- Push the changes in your branch to your forked repository.
- Finally, go to https://github.com/eclipse/paho.mqtt.cpp and create a pull request from your “YOUR_BRANCH_NAME” branch to the
developone to request review and merge of the commits in your pushed branch.
What happens next depends on the content of the patch. If it is 100% authored by the contributor and is less than 1000 lines (and meets the needs of the project), then it can be pulled into the main repository. If not, more steps are required. These are detailed in the legal process poster.
Developer resources:
Information regarding source code management, builds, coding standards, and more.
Contact:
Contact the project developers via the project’s development mailing list.
Search for bugs:
This project uses GitHub Issues here: github.com/eclipse/paho.mqtt.cpp/issues to track ongoing development and issues.
Create a new bug:
Be sure to search for existing bugs before you create another one. Remember that contributions are always welcome!
Repository Summary
| Description | |
| Checkout URI | https://github.com/eclipse/paho.mqtt.cpp.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-02-24 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
README
Eclipse Paho MQTT C++ Client Library
This repository contains the source code for the Eclipse Paho MQTT C++ client library for memory-managed operating systems such as Linux, MacOS, and Windows.
This code builds a library which enables Modern C++ applications (C++17 and beyond) to connect to an MQTT broker, publish messages, subscribe to topics, and receive messages from the broker.
The library has the following features:
- Support for MQTT v3.1, v3.1.1, and v5.
- Network Transports:
- Standard TCP
- UNIX-domain sockets
- Secure sockets with SSL/TLS
- WebSockets
- Secure and insecure
- Proxy support
- Message persistence
- User configurable
- Built-in File persistence
- User-defined key/value persistence easy to implement
- Automatic Reconnect
- Offline Buffering
- High Availability
- Blocking and non-blocking APIs
- Modern C++ interface (C++17)
This code requires the Paho C library by Ian Craggs, et al., specifically version 1.3.16 or possibly later.
Latest News
To keep up with the latest announcements for this project, or to ask questions:
Mastodon: @fpagliughi@fosstodon.org
Email: Eclipse Paho Mailing List
What’s New in v1.6.x
The v1.6.x is tested and builds around the latest Paho C v1.3.16, which has a number of performance enhancements and reduces a number of latency issues in connecting and publishing. Some additional updates:
- Bumped Paho C submodule to v1.3.16 and updated directory name to externals/paho.mqtt.c
- Some significant performance increases (lower latency) for connect and publish
- Fixes to topic matching:
- Fixed
topic_matcherandtopic_filterto properly match parent with multi-level (‘#’) wildcard. - Slight optimization of
topic_filterto do simple string comparison if the filter does not contain wildcards. - Prevent undefined behaviour on empty topic matching
- Fixed
- Set a minimum version for Paho C in the CMake file.
- Debian .deb file properly versioned, and adds the architecture to the .deb file name.
- Fixed post-reconnect crash in the sync
client
For the full list of updates in each release, see the CHANGELOG.
Contributing
Contributions to this project are gladly welcomed and appreciated. Before submitting a Pull Request, please keep three things in mind:
- This is an official Eclipse project, so it is required that all contributors sign an Eclipse Contributor Agreement (ECA)
- Please submit all Pull Requests against the develop branch (not master).
- Please sign all commits.
For full details, see CONTRIBUTING.md.
Building from source
As of v1.5, the Paho C++ library uses C++17 features, thus requiring a fully compliant C++17 compiler. Some of the more common compilers that can be used, depending on the target platform, are:
- GCC v8 or later
- clang v5 or later
- Visual Studio 2017 15.8 (MSVC 19.15) or later
CMake is a cross-platform build system suitable for Unix and non-Unix platforms such as Microsoft Windows. It is the only supported build system. The current supported minimum version is:
- cmake v3.13
The Paho C++ library requires the Paho C library, v1.3.16 or greater to be built and installed. That can be done before building this library, or it can be done here using the CMake PAHO_WITH_MQTT_C build option to build both libraries at the same time. This also guarantees that a proper version of the C library is used, and that it is build with compatible options.
Build Options
CMake allows for options to direct the build. The following are specific to Paho C++:
| Variable | Default Value | Description |
|---|---|---|
| PAHO_BUILD_SHARED | TRUE (*nix), FALSE (Win32) | Whether to build the shared library |
| PAHO_BUILD_STATIC | FALSE (*nix), TRUE (Win32) | Whether to build the static library |
| PAHO_WITH_SSL | TRUE (*nix), FALSE (Win32) | Whether to build SSL/TLS support into the library |
| PAHO_BUILD_DOCUMENTATION | FALSE | Create the HTML API documentation (requires Doxygen) |
| PAHO_BUILD_EXAMPLES | FALSE | Whether to build the example programs |
| PAHO_BUILD_TESTS | FALSE | Build the unit tests. (Requires Catch2) |
| PAHO_BUILD_DEB_PACKAGE | FALSE | Flag that configures cpack to build a Debian/Ubuntu package |
| PAHO_WITH_MQTT_C | FALSE | Whether to build the bundled Paho C library |
Enabling PAHO_WITH_MQTT_C builds and links in the Paho C library using compatible build options. If this is enabled, it passes the PAHO_WITH_SSL option to the C library, and also sets the options PAHO_HIGH_PERFORMANCE and PAHO_WITH_UNIX_SOCKETS for the C lib. These can be disabled in the cache before building if desired.
In addition, the C++ build might commonly use CMAKE_PREFIX_PATH to help the build system find the location of the Paho C library if it was built separately.
Build the Paho C++ and Paho C libraries together
The quickest and easiest way to build Paho C++ is to build it together with Paho C in a single step using the included Git submodule.
This requires the CMake option PAHO_WITH_MQTT_C set.
File truncated at 100 lines see the full file
CONTRIBUTING
Contributing to Paho
Thanks for your interest in this project!
You can contribute bugfixes and new features by sending pull requests through GitHub.
Legal
In order for your contribution to be accepted, it must comply with the Eclipse Foundation IP policy.
Please read the Eclipse Foundation policy on accepting contributions via Git.
- Sign the Eclipse ECA
- Register for an Eclipse Foundation User ID. You can register here.
- Log into the Eclipse projects forge, and click on ‘Eclipse Contributor Agreement’.
- Go to your account settings and add your GitHub username to your account.
- Make sure that you sign-off your Git commits in the following format:
Signed-off-by: Alex Smith <alexsmith@nowhere.com>
This is usually at the bottom of the commit message. You can automate this by adding the ‘-s’ flag when you make the commits. e.g.
```git commit -s -m “Adding a cool feature”
4. Ensure that the email address that you make your commits with is the same one you used to sign up to the Eclipse Foundation website with.
## Contributing a change
1. [Fork the repository on GitHub](https://github.com/eclipse/paho.mqtt.cpp/fork)
2. Clone the forked repository onto your computer:
``` git clone https://github.com/<your username>/paho.mqtt.cpp.git
- Create a new branch from the latest
``` branch with ```git checkout -b YOUR_BRANCH_NAME origin/develop - Make your changes
- If developing a new feature, make sure to include unit tests.
- Ensure that all new and existing tests pass.
- Commit the changes into the branch:
git commit -sMake sure that your commit message is meaningful and describes your changes correctly. - If you have a lot of commits for the change, squash them into a single / few commits.
- Push the changes in your branch to your forked repository.
- Finally, go to https://github.com/eclipse/paho.mqtt.cpp and create a pull request from your “YOUR_BRANCH_NAME” branch to the
developone to request review and merge of the commits in your pushed branch.
What happens next depends on the content of the patch. If it is 100% authored by the contributor and is less than 1000 lines (and meets the needs of the project), then it can be pulled into the main repository. If not, more steps are required. These are detailed in the legal process poster.
Developer resources:
Information regarding source code management, builds, coding standards, and more.
Contact:
Contact the project developers via the project’s development mailing list.
Search for bugs:
This project uses GitHub Issues here: github.com/eclipse/paho.mqtt.cpp/issues to track ongoing development and issues.
Create a new bug:
Be sure to search for existing bugs before you create another one. Remember that contributions are always welcome!
Repository Summary
| Description | |
| Checkout URI | https://github.com/eclipse/paho.mqtt.cpp.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-02-24 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
README
Eclipse Paho MQTT C++ Client Library
This repository contains the source code for the Eclipse Paho MQTT C++ client library for memory-managed operating systems such as Linux, MacOS, and Windows.
This code builds a library which enables Modern C++ applications (C++17 and beyond) to connect to an MQTT broker, publish messages, subscribe to topics, and receive messages from the broker.
The library has the following features:
- Support for MQTT v3.1, v3.1.1, and v5.
- Network Transports:
- Standard TCP
- UNIX-domain sockets
- Secure sockets with SSL/TLS
- WebSockets
- Secure and insecure
- Proxy support
- Message persistence
- User configurable
- Built-in File persistence
- User-defined key/value persistence easy to implement
- Automatic Reconnect
- Offline Buffering
- High Availability
- Blocking and non-blocking APIs
- Modern C++ interface (C++17)
This code requires the Paho C library by Ian Craggs, et al., specifically version 1.3.16 or possibly later.
Latest News
To keep up with the latest announcements for this project, or to ask questions:
Mastodon: @fpagliughi@fosstodon.org
Email: Eclipse Paho Mailing List
What’s New in v1.6.x
The v1.6.x is tested and builds around the latest Paho C v1.3.16, which has a number of performance enhancements and reduces a number of latency issues in connecting and publishing. Some additional updates:
- Bumped Paho C submodule to v1.3.16 and updated directory name to externals/paho.mqtt.c
- Some significant performance increases (lower latency) for connect and publish
- Fixes to topic matching:
- Fixed
topic_matcherandtopic_filterto properly match parent with multi-level (‘#’) wildcard. - Slight optimization of
topic_filterto do simple string comparison if the filter does not contain wildcards. - Prevent undefined behaviour on empty topic matching
- Fixed
- Set a minimum version for Paho C in the CMake file.
- Debian .deb file properly versioned, and adds the architecture to the .deb file name.
- Fixed post-reconnect crash in the sync
client
For the full list of updates in each release, see the CHANGELOG.
Contributing
Contributions to this project are gladly welcomed and appreciated. Before submitting a Pull Request, please keep three things in mind:
- This is an official Eclipse project, so it is required that all contributors sign an Eclipse Contributor Agreement (ECA)
- Please submit all Pull Requests against the develop branch (not master).
- Please sign all commits.
For full details, see CONTRIBUTING.md.
Building from source
As of v1.5, the Paho C++ library uses C++17 features, thus requiring a fully compliant C++17 compiler. Some of the more common compilers that can be used, depending on the target platform, are:
- GCC v8 or later
- clang v5 or later
- Visual Studio 2017 15.8 (MSVC 19.15) or later
CMake is a cross-platform build system suitable for Unix and non-Unix platforms such as Microsoft Windows. It is the only supported build system. The current supported minimum version is:
- cmake v3.13
The Paho C++ library requires the Paho C library, v1.3.16 or greater to be built and installed. That can be done before building this library, or it can be done here using the CMake PAHO_WITH_MQTT_C build option to build both libraries at the same time. This also guarantees that a proper version of the C library is used, and that it is build with compatible options.
Build Options
CMake allows for options to direct the build. The following are specific to Paho C++:
| Variable | Default Value | Description |
|---|---|---|
| PAHO_BUILD_SHARED | TRUE (*nix), FALSE (Win32) | Whether to build the shared library |
| PAHO_BUILD_STATIC | FALSE (*nix), TRUE (Win32) | Whether to build the static library |
| PAHO_WITH_SSL | TRUE (*nix), FALSE (Win32) | Whether to build SSL/TLS support into the library |
| PAHO_BUILD_DOCUMENTATION | FALSE | Create the HTML API documentation (requires Doxygen) |
| PAHO_BUILD_EXAMPLES | FALSE | Whether to build the example programs |
| PAHO_BUILD_TESTS | FALSE | Build the unit tests. (Requires Catch2) |
| PAHO_BUILD_DEB_PACKAGE | FALSE | Flag that configures cpack to build a Debian/Ubuntu package |
| PAHO_WITH_MQTT_C | FALSE | Whether to build the bundled Paho C library |
Enabling PAHO_WITH_MQTT_C builds and links in the Paho C library using compatible build options. If this is enabled, it passes the PAHO_WITH_SSL option to the C library, and also sets the options PAHO_HIGH_PERFORMANCE and PAHO_WITH_UNIX_SOCKETS for the C lib. These can be disabled in the cache before building if desired.
In addition, the C++ build might commonly use CMAKE_PREFIX_PATH to help the build system find the location of the Paho C library if it was built separately.
Build the Paho C++ and Paho C libraries together
The quickest and easiest way to build Paho C++ is to build it together with Paho C in a single step using the included Git submodule.
This requires the CMake option PAHO_WITH_MQTT_C set.
File truncated at 100 lines see the full file
CONTRIBUTING
Contributing to Paho
Thanks for your interest in this project!
You can contribute bugfixes and new features by sending pull requests through GitHub.
Legal
In order for your contribution to be accepted, it must comply with the Eclipse Foundation IP policy.
Please read the Eclipse Foundation policy on accepting contributions via Git.
- Sign the Eclipse ECA
- Register for an Eclipse Foundation User ID. You can register here.
- Log into the Eclipse projects forge, and click on ‘Eclipse Contributor Agreement’.
- Go to your account settings and add your GitHub username to your account.
- Make sure that you sign-off your Git commits in the following format:
Signed-off-by: Alex Smith <alexsmith@nowhere.com>
This is usually at the bottom of the commit message. You can automate this by adding the ‘-s’ flag when you make the commits. e.g.
```git commit -s -m “Adding a cool feature”
4. Ensure that the email address that you make your commits with is the same one you used to sign up to the Eclipse Foundation website with.
## Contributing a change
1. [Fork the repository on GitHub](https://github.com/eclipse/paho.mqtt.cpp/fork)
2. Clone the forked repository onto your computer:
``` git clone https://github.com/<your username>/paho.mqtt.cpp.git
- Create a new branch from the latest
``` branch with ```git checkout -b YOUR_BRANCH_NAME origin/develop - Make your changes
- If developing a new feature, make sure to include unit tests.
- Ensure that all new and existing tests pass.
- Commit the changes into the branch:
git commit -sMake sure that your commit message is meaningful and describes your changes correctly. - If you have a lot of commits for the change, squash them into a single / few commits.
- Push the changes in your branch to your forked repository.
- Finally, go to https://github.com/eclipse/paho.mqtt.cpp and create a pull request from your “YOUR_BRANCH_NAME” branch to the
developone to request review and merge of the commits in your pushed branch.
What happens next depends on the content of the patch. If it is 100% authored by the contributor and is less than 1000 lines (and meets the needs of the project), then it can be pulled into the main repository. If not, more steps are required. These are detailed in the legal process poster.
Developer resources:
Information regarding source code management, builds, coding standards, and more.
Contact:
Contact the project developers via the project’s development mailing list.
Search for bugs:
This project uses GitHub Issues here: github.com/eclipse/paho.mqtt.cpp/issues to track ongoing development and issues.
Create a new bug:
Be sure to search for existing bugs before you create another one. Remember that contributions are always welcome!
Repository Summary
| Description | |
| Checkout URI | https://github.com/eclipse/paho.mqtt.cpp.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-02-24 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
README
Eclipse Paho MQTT C++ Client Library
This repository contains the source code for the Eclipse Paho MQTT C++ client library for memory-managed operating systems such as Linux, MacOS, and Windows.
This code builds a library which enables Modern C++ applications (C++17 and beyond) to connect to an MQTT broker, publish messages, subscribe to topics, and receive messages from the broker.
The library has the following features:
- Support for MQTT v3.1, v3.1.1, and v5.
- Network Transports:
- Standard TCP
- UNIX-domain sockets
- Secure sockets with SSL/TLS
- WebSockets
- Secure and insecure
- Proxy support
- Message persistence
- User configurable
- Built-in File persistence
- User-defined key/value persistence easy to implement
- Automatic Reconnect
- Offline Buffering
- High Availability
- Blocking and non-blocking APIs
- Modern C++ interface (C++17)
This code requires the Paho C library by Ian Craggs, et al., specifically version 1.3.16 or possibly later.
Latest News
To keep up with the latest announcements for this project, or to ask questions:
Mastodon: @fpagliughi@fosstodon.org
Email: Eclipse Paho Mailing List
What’s New in v1.6.x
The v1.6.x is tested and builds around the latest Paho C v1.3.16, which has a number of performance enhancements and reduces a number of latency issues in connecting and publishing. Some additional updates:
- Bumped Paho C submodule to v1.3.16 and updated directory name to externals/paho.mqtt.c
- Some significant performance increases (lower latency) for connect and publish
- Fixes to topic matching:
- Fixed
topic_matcherandtopic_filterto properly match parent with multi-level (‘#’) wildcard. - Slight optimization of
topic_filterto do simple string comparison if the filter does not contain wildcards. - Prevent undefined behaviour on empty topic matching
- Fixed
- Set a minimum version for Paho C in the CMake file.
- Debian .deb file properly versioned, and adds the architecture to the .deb file name.
- Fixed post-reconnect crash in the sync
client
For the full list of updates in each release, see the CHANGELOG.
Contributing
Contributions to this project are gladly welcomed and appreciated. Before submitting a Pull Request, please keep three things in mind:
- This is an official Eclipse project, so it is required that all contributors sign an Eclipse Contributor Agreement (ECA)
- Please submit all Pull Requests against the develop branch (not master).
- Please sign all commits.
For full details, see CONTRIBUTING.md.
Building from source
As of v1.5, the Paho C++ library uses C++17 features, thus requiring a fully compliant C++17 compiler. Some of the more common compilers that can be used, depending on the target platform, are:
- GCC v8 or later
- clang v5 or later
- Visual Studio 2017 15.8 (MSVC 19.15) or later
CMake is a cross-platform build system suitable for Unix and non-Unix platforms such as Microsoft Windows. It is the only supported build system. The current supported minimum version is:
- cmake v3.13
The Paho C++ library requires the Paho C library, v1.3.16 or greater to be built and installed. That can be done before building this library, or it can be done here using the CMake PAHO_WITH_MQTT_C build option to build both libraries at the same time. This also guarantees that a proper version of the C library is used, and that it is build with compatible options.
Build Options
CMake allows for options to direct the build. The following are specific to Paho C++:
| Variable | Default Value | Description |
|---|---|---|
| PAHO_BUILD_SHARED | TRUE (*nix), FALSE (Win32) | Whether to build the shared library |
| PAHO_BUILD_STATIC | FALSE (*nix), TRUE (Win32) | Whether to build the static library |
| PAHO_WITH_SSL | TRUE (*nix), FALSE (Win32) | Whether to build SSL/TLS support into the library |
| PAHO_BUILD_DOCUMENTATION | FALSE | Create the HTML API documentation (requires Doxygen) |
| PAHO_BUILD_EXAMPLES | FALSE | Whether to build the example programs |
| PAHO_BUILD_TESTS | FALSE | Build the unit tests. (Requires Catch2) |
| PAHO_BUILD_DEB_PACKAGE | FALSE | Flag that configures cpack to build a Debian/Ubuntu package |
| PAHO_WITH_MQTT_C | FALSE | Whether to build the bundled Paho C library |
Enabling PAHO_WITH_MQTT_C builds and links in the Paho C library using compatible build options. If this is enabled, it passes the PAHO_WITH_SSL option to the C library, and also sets the options PAHO_HIGH_PERFORMANCE and PAHO_WITH_UNIX_SOCKETS for the C lib. These can be disabled in the cache before building if desired.
In addition, the C++ build might commonly use CMAKE_PREFIX_PATH to help the build system find the location of the Paho C library if it was built separately.
Build the Paho C++ and Paho C libraries together
The quickest and easiest way to build Paho C++ is to build it together with Paho C in a single step using the included Git submodule.
This requires the CMake option PAHO_WITH_MQTT_C set.
File truncated at 100 lines see the full file
CONTRIBUTING
Contributing to Paho
Thanks for your interest in this project!
You can contribute bugfixes and new features by sending pull requests through GitHub.
Legal
In order for your contribution to be accepted, it must comply with the Eclipse Foundation IP policy.
Please read the Eclipse Foundation policy on accepting contributions via Git.
- Sign the Eclipse ECA
- Register for an Eclipse Foundation User ID. You can register here.
- Log into the Eclipse projects forge, and click on ‘Eclipse Contributor Agreement’.
- Go to your account settings and add your GitHub username to your account.
- Make sure that you sign-off your Git commits in the following format:
Signed-off-by: Alex Smith <alexsmith@nowhere.com>
This is usually at the bottom of the commit message. You can automate this by adding the ‘-s’ flag when you make the commits. e.g.
```git commit -s -m “Adding a cool feature”
4. Ensure that the email address that you make your commits with is the same one you used to sign up to the Eclipse Foundation website with.
## Contributing a change
1. [Fork the repository on GitHub](https://github.com/eclipse/paho.mqtt.cpp/fork)
2. Clone the forked repository onto your computer:
``` git clone https://github.com/<your username>/paho.mqtt.cpp.git
- Create a new branch from the latest
``` branch with ```git checkout -b YOUR_BRANCH_NAME origin/develop - Make your changes
- If developing a new feature, make sure to include unit tests.
- Ensure that all new and existing tests pass.
- Commit the changes into the branch:
git commit -sMake sure that your commit message is meaningful and describes your changes correctly. - If you have a lot of commits for the change, squash them into a single / few commits.
- Push the changes in your branch to your forked repository.
- Finally, go to https://github.com/eclipse/paho.mqtt.cpp and create a pull request from your “YOUR_BRANCH_NAME” branch to the
developone to request review and merge of the commits in your pushed branch.
What happens next depends on the content of the patch. If it is 100% authored by the contributor and is less than 1000 lines (and meets the needs of the project), then it can be pulled into the main repository. If not, more steps are required. These are detailed in the legal process poster.
Developer resources:
Information regarding source code management, builds, coding standards, and more.
Contact:
Contact the project developers via the project’s development mailing list.
Search for bugs:
This project uses GitHub Issues here: github.com/eclipse/paho.mqtt.cpp/issues to track ongoing development and issues.
Create a new bug:
Be sure to search for existing bugs before you create another one. Remember that contributions are always welcome!
Repository Summary
| Description | |
| Checkout URI | https://github.com/eclipse/paho.mqtt.cpp.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-02-24 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
README
Eclipse Paho MQTT C++ Client Library
This repository contains the source code for the Eclipse Paho MQTT C++ client library for memory-managed operating systems such as Linux, MacOS, and Windows.
This code builds a library which enables Modern C++ applications (C++17 and beyond) to connect to an MQTT broker, publish messages, subscribe to topics, and receive messages from the broker.
The library has the following features:
- Support for MQTT v3.1, v3.1.1, and v5.
- Network Transports:
- Standard TCP
- UNIX-domain sockets
- Secure sockets with SSL/TLS
- WebSockets
- Secure and insecure
- Proxy support
- Message persistence
- User configurable
- Built-in File persistence
- User-defined key/value persistence easy to implement
- Automatic Reconnect
- Offline Buffering
- High Availability
- Blocking and non-blocking APIs
- Modern C++ interface (C++17)
This code requires the Paho C library by Ian Craggs, et al., specifically version 1.3.16 or possibly later.
Latest News
To keep up with the latest announcements for this project, or to ask questions:
Mastodon: @fpagliughi@fosstodon.org
Email: Eclipse Paho Mailing List
What’s New in v1.6.x
The v1.6.x is tested and builds around the latest Paho C v1.3.16, which has a number of performance enhancements and reduces a number of latency issues in connecting and publishing. Some additional updates:
- Bumped Paho C submodule to v1.3.16 and updated directory name to externals/paho.mqtt.c
- Some significant performance increases (lower latency) for connect and publish
- Fixes to topic matching:
- Fixed
topic_matcherandtopic_filterto properly match parent with multi-level (‘#’) wildcard. - Slight optimization of
topic_filterto do simple string comparison if the filter does not contain wildcards. - Prevent undefined behaviour on empty topic matching
- Fixed
- Set a minimum version for Paho C in the CMake file.
- Debian .deb file properly versioned, and adds the architecture to the .deb file name.
- Fixed post-reconnect crash in the sync
client
For the full list of updates in each release, see the CHANGELOG.
Contributing
Contributions to this project are gladly welcomed and appreciated. Before submitting a Pull Request, please keep three things in mind:
- This is an official Eclipse project, so it is required that all contributors sign an Eclipse Contributor Agreement (ECA)
- Please submit all Pull Requests against the develop branch (not master).
- Please sign all commits.
For full details, see CONTRIBUTING.md.
Building from source
As of v1.5, the Paho C++ library uses C++17 features, thus requiring a fully compliant C++17 compiler. Some of the more common compilers that can be used, depending on the target platform, are:
- GCC v8 or later
- clang v5 or later
- Visual Studio 2017 15.8 (MSVC 19.15) or later
CMake is a cross-platform build system suitable for Unix and non-Unix platforms such as Microsoft Windows. It is the only supported build system. The current supported minimum version is:
- cmake v3.13
The Paho C++ library requires the Paho C library, v1.3.16 or greater to be built and installed. That can be done before building this library, or it can be done here using the CMake PAHO_WITH_MQTT_C build option to build both libraries at the same time. This also guarantees that a proper version of the C library is used, and that it is build with compatible options.
Build Options
CMake allows for options to direct the build. The following are specific to Paho C++:
| Variable | Default Value | Description |
|---|---|---|
| PAHO_BUILD_SHARED | TRUE (*nix), FALSE (Win32) | Whether to build the shared library |
| PAHO_BUILD_STATIC | FALSE (*nix), TRUE (Win32) | Whether to build the static library |
| PAHO_WITH_SSL | TRUE (*nix), FALSE (Win32) | Whether to build SSL/TLS support into the library |
| PAHO_BUILD_DOCUMENTATION | FALSE | Create the HTML API documentation (requires Doxygen) |
| PAHO_BUILD_EXAMPLES | FALSE | Whether to build the example programs |
| PAHO_BUILD_TESTS | FALSE | Build the unit tests. (Requires Catch2) |
| PAHO_BUILD_DEB_PACKAGE | FALSE | Flag that configures cpack to build a Debian/Ubuntu package |
| PAHO_WITH_MQTT_C | FALSE | Whether to build the bundled Paho C library |
Enabling PAHO_WITH_MQTT_C builds and links in the Paho C library using compatible build options. If this is enabled, it passes the PAHO_WITH_SSL option to the C library, and also sets the options PAHO_HIGH_PERFORMANCE and PAHO_WITH_UNIX_SOCKETS for the C lib. These can be disabled in the cache before building if desired.
In addition, the C++ build might commonly use CMAKE_PREFIX_PATH to help the build system find the location of the Paho C library if it was built separately.
Build the Paho C++ and Paho C libraries together
The quickest and easiest way to build Paho C++ is to build it together with Paho C in a single step using the included Git submodule.
This requires the CMake option PAHO_WITH_MQTT_C set.
File truncated at 100 lines see the full file
CONTRIBUTING
Contributing to Paho
Thanks for your interest in this project!
You can contribute bugfixes and new features by sending pull requests through GitHub.
Legal
In order for your contribution to be accepted, it must comply with the Eclipse Foundation IP policy.
Please read the Eclipse Foundation policy on accepting contributions via Git.
- Sign the Eclipse ECA
- Register for an Eclipse Foundation User ID. You can register here.
- Log into the Eclipse projects forge, and click on ‘Eclipse Contributor Agreement’.
- Go to your account settings and add your GitHub username to your account.
- Make sure that you sign-off your Git commits in the following format:
Signed-off-by: Alex Smith <alexsmith@nowhere.com>
This is usually at the bottom of the commit message. You can automate this by adding the ‘-s’ flag when you make the commits. e.g.
```git commit -s -m “Adding a cool feature”
4. Ensure that the email address that you make your commits with is the same one you used to sign up to the Eclipse Foundation website with.
## Contributing a change
1. [Fork the repository on GitHub](https://github.com/eclipse/paho.mqtt.cpp/fork)
2. Clone the forked repository onto your computer:
``` git clone https://github.com/<your username>/paho.mqtt.cpp.git
- Create a new branch from the latest
``` branch with ```git checkout -b YOUR_BRANCH_NAME origin/develop - Make your changes
- If developing a new feature, make sure to include unit tests.
- Ensure that all new and existing tests pass.
- Commit the changes into the branch:
git commit -sMake sure that your commit message is meaningful and describes your changes correctly. - If you have a lot of commits for the change, squash them into a single / few commits.
- Push the changes in your branch to your forked repository.
- Finally, go to https://github.com/eclipse/paho.mqtt.cpp and create a pull request from your “YOUR_BRANCH_NAME” branch to the
developone to request review and merge of the commits in your pushed branch.
What happens next depends on the content of the patch. If it is 100% authored by the contributor and is less than 1000 lines (and meets the needs of the project), then it can be pulled into the main repository. If not, more steps are required. These are detailed in the legal process poster.
Developer resources:
Information regarding source code management, builds, coding standards, and more.
Contact:
Contact the project developers via the project’s development mailing list.
Search for bugs:
This project uses GitHub Issues here: github.com/eclipse/paho.mqtt.cpp/issues to track ongoing development and issues.
Create a new bug:
Be sure to search for existing bugs before you create another one. Remember that contributions are always welcome!
Repository Summary
| Description | |
| Checkout URI | https://github.com/eclipse/paho.mqtt.cpp.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-02-24 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
README
Eclipse Paho MQTT C++ Client Library
This repository contains the source code for the Eclipse Paho MQTT C++ client library for memory-managed operating systems such as Linux, MacOS, and Windows.
This code builds a library which enables Modern C++ applications (C++17 and beyond) to connect to an MQTT broker, publish messages, subscribe to topics, and receive messages from the broker.
The library has the following features:
- Support for MQTT v3.1, v3.1.1, and v5.
- Network Transports:
- Standard TCP
- UNIX-domain sockets
- Secure sockets with SSL/TLS
- WebSockets
- Secure and insecure
- Proxy support
- Message persistence
- User configurable
- Built-in File persistence
- User-defined key/value persistence easy to implement
- Automatic Reconnect
- Offline Buffering
- High Availability
- Blocking and non-blocking APIs
- Modern C++ interface (C++17)
This code requires the Paho C library by Ian Craggs, et al., specifically version 1.3.16 or possibly later.
Latest News
To keep up with the latest announcements for this project, or to ask questions:
Mastodon: @fpagliughi@fosstodon.org
Email: Eclipse Paho Mailing List
What’s New in v1.6.x
The v1.6.x is tested and builds around the latest Paho C v1.3.16, which has a number of performance enhancements and reduces a number of latency issues in connecting and publishing. Some additional updates:
- Bumped Paho C submodule to v1.3.16 and updated directory name to externals/paho.mqtt.c
- Some significant performance increases (lower latency) for connect and publish
- Fixes to topic matching:
- Fixed
topic_matcherandtopic_filterto properly match parent with multi-level (‘#’) wildcard. - Slight optimization of
topic_filterto do simple string comparison if the filter does not contain wildcards. - Prevent undefined behaviour on empty topic matching
- Fixed
- Set a minimum version for Paho C in the CMake file.
- Debian .deb file properly versioned, and adds the architecture to the .deb file name.
- Fixed post-reconnect crash in the sync
client
For the full list of updates in each release, see the CHANGELOG.
Contributing
Contributions to this project are gladly welcomed and appreciated. Before submitting a Pull Request, please keep three things in mind:
- This is an official Eclipse project, so it is required that all contributors sign an Eclipse Contributor Agreement (ECA)
- Please submit all Pull Requests against the develop branch (not master).
- Please sign all commits.
For full details, see CONTRIBUTING.md.
Building from source
As of v1.5, the Paho C++ library uses C++17 features, thus requiring a fully compliant C++17 compiler. Some of the more common compilers that can be used, depending on the target platform, are:
- GCC v8 or later
- clang v5 or later
- Visual Studio 2017 15.8 (MSVC 19.15) or later
CMake is a cross-platform build system suitable for Unix and non-Unix platforms such as Microsoft Windows. It is the only supported build system. The current supported minimum version is:
- cmake v3.13
The Paho C++ library requires the Paho C library, v1.3.16 or greater to be built and installed. That can be done before building this library, or it can be done here using the CMake PAHO_WITH_MQTT_C build option to build both libraries at the same time. This also guarantees that a proper version of the C library is used, and that it is build with compatible options.
Build Options
CMake allows for options to direct the build. The following are specific to Paho C++:
| Variable | Default Value | Description |
|---|---|---|
| PAHO_BUILD_SHARED | TRUE (*nix), FALSE (Win32) | Whether to build the shared library |
| PAHO_BUILD_STATIC | FALSE (*nix), TRUE (Win32) | Whether to build the static library |
| PAHO_WITH_SSL | TRUE (*nix), FALSE (Win32) | Whether to build SSL/TLS support into the library |
| PAHO_BUILD_DOCUMENTATION | FALSE | Create the HTML API documentation (requires Doxygen) |
| PAHO_BUILD_EXAMPLES | FALSE | Whether to build the example programs |
| PAHO_BUILD_TESTS | FALSE | Build the unit tests. (Requires Catch2) |
| PAHO_BUILD_DEB_PACKAGE | FALSE | Flag that configures cpack to build a Debian/Ubuntu package |
| PAHO_WITH_MQTT_C | FALSE | Whether to build the bundled Paho C library |
Enabling PAHO_WITH_MQTT_C builds and links in the Paho C library using compatible build options. If this is enabled, it passes the PAHO_WITH_SSL option to the C library, and also sets the options PAHO_HIGH_PERFORMANCE and PAHO_WITH_UNIX_SOCKETS for the C lib. These can be disabled in the cache before building if desired.
In addition, the C++ build might commonly use CMAKE_PREFIX_PATH to help the build system find the location of the Paho C library if it was built separately.
Build the Paho C++ and Paho C libraries together
The quickest and easiest way to build Paho C++ is to build it together with Paho C in a single step using the included Git submodule.
This requires the CMake option PAHO_WITH_MQTT_C set.
File truncated at 100 lines see the full file
CONTRIBUTING
Contributing to Paho
Thanks for your interest in this project!
You can contribute bugfixes and new features by sending pull requests through GitHub.
Legal
In order for your contribution to be accepted, it must comply with the Eclipse Foundation IP policy.
Please read the Eclipse Foundation policy on accepting contributions via Git.
- Sign the Eclipse ECA
- Register for an Eclipse Foundation User ID. You can register here.
- Log into the Eclipse projects forge, and click on ‘Eclipse Contributor Agreement’.
- Go to your account settings and add your GitHub username to your account.
- Make sure that you sign-off your Git commits in the following format:
Signed-off-by: Alex Smith <alexsmith@nowhere.com>
This is usually at the bottom of the commit message. You can automate this by adding the ‘-s’ flag when you make the commits. e.g.
```git commit -s -m “Adding a cool feature”
4. Ensure that the email address that you make your commits with is the same one you used to sign up to the Eclipse Foundation website with.
## Contributing a change
1. [Fork the repository on GitHub](https://github.com/eclipse/paho.mqtt.cpp/fork)
2. Clone the forked repository onto your computer:
``` git clone https://github.com/<your username>/paho.mqtt.cpp.git
- Create a new branch from the latest
``` branch with ```git checkout -b YOUR_BRANCH_NAME origin/develop - Make your changes
- If developing a new feature, make sure to include unit tests.
- Ensure that all new and existing tests pass.
- Commit the changes into the branch:
git commit -sMake sure that your commit message is meaningful and describes your changes correctly. - If you have a lot of commits for the change, squash them into a single / few commits.
- Push the changes in your branch to your forked repository.
- Finally, go to https://github.com/eclipse/paho.mqtt.cpp and create a pull request from your “YOUR_BRANCH_NAME” branch to the
developone to request review and merge of the commits in your pushed branch.
What happens next depends on the content of the patch. If it is 100% authored by the contributor and is less than 1000 lines (and meets the needs of the project), then it can be pulled into the main repository. If not, more steps are required. These are detailed in the legal process poster.
Developer resources:
Information regarding source code management, builds, coding standards, and more.
Contact:
Contact the project developers via the project’s development mailing list.
Search for bugs:
This project uses GitHub Issues here: github.com/eclipse/paho.mqtt.cpp/issues to track ongoing development and issues.
Create a new bug:
Be sure to search for existing bugs before you create another one. Remember that contributions are always welcome!