Cross-platform C++ XMPP client and server library
Go to file
Linus Jahn 6fe82239fc
Merge pull request #570 from taiBsu/feature/jingle-message-initiation
XEP-0353: Jingle Message Initiation
2023-05-15 00:00:35 +02:00
.github Merge branch '1.5' 2023-03-17 17:24:52 +01:00
LICENSES reuse: Import CC-BY-SA-4.0 license 2023-02-18 14:07:47 +01:00
cmake Support installing QXmpp with Qt 5 and Qt 6 in parallel 2023-04-07 15:58:12 +02:00
doc Add XEP-0353: Jingle Message Initiation manager 2023-05-14 23:58:01 +02:00
examples Support installing QXmpp with Qt 5 and Qt 6 in parallel 2023-04-07 15:58:12 +02:00
src JingleData: Fix doxygen warnings 2023-05-14 23:58:01 +02:00
tests Jingle: Remove namespaceUri attribute 2023-05-14 23:58:01 +02:00
.appveyor.yml REUSE-ify whole project 2022-01-15 01:09:37 +01:00
.clang-format clang-format: Enforce braces around statements 2022-09-06 00:46:56 +02:00
.gitignore REUSE-ify whole project 2022-01-15 01:09:37 +01:00
AUTHORS REUSE-ify whole project 2022-01-15 01:09:37 +01:00
CHANGELOG.md Merge branch '1.5' 2023-04-30 13:45:28 +02:00
CMakeLists.txt Merge branch '1.5' 2023-04-30 13:45:28 +02:00
QXmppConfig.cmake.in Support installing QXmpp with Qt 5 and Qt 6 in parallel 2023-04-07 15:58:12 +02:00
README.md README: Document QT_VERSION_MAJOR build option 2023-03-22 13:09:50 +01:00
SECURITY.md Fix missing license information for READMEs 2022-09-04 18:08:22 +02:00
logo.svg Add new QXmpp logo (#528) 2023-02-17 15:56:16 +01:00
logo.svg.license Add new QXmpp logo (#528) 2023-02-17 15:56:16 +01:00
qxmpp.pc.in Fix the generated qxmpp pkgconfig files 2023-04-29 12:31:00 +02:00
qxmpp_legacy.pc.in Fix the generated qxmpp pkgconfig files 2023-04-29 12:31:00 +02:00

README.md

QXmpp logo

XMPP:2022 Client IM Mobile+ Compliance Badge

Build Status Code Coverage Latest release Documentation Development Chat Donate using Liberapay

QXmpp is a cross-platform C++ XMPP client and server library. It is written in C++ and uses Qt framework.

QXmpp strives to be as easy to use as possible, the underlying TCP socket, the core XMPP RFCs (RFC6120 and RFC6121) and XMPP extensions have been nicely encapsulated into classes. QXmpp is ready to build XMPP clients complying with the XMPP Compliance Suites 2022 for IM and Advanced Mobile. It comes with full API documentation, automatic tests and some examples.

QXmpp uses Qt extensively, and as such users need to a have working knowledge of C++ and Qt basics (Signals and Slots and Qt data types).

Qt is the only third party library which is required to build QXmpp, but libraries such as GStreamer enable additional features.

QXmpp is released under the terms of the GNU Lesser General Public License, version 2.1 or later.

Building QXmpp

QXmpp requires Qt 5.15 or Qt 6.0 or higher with SSL enabled. It uses CMake as build system.

Build from command line:

mkdir build
cd build
cmake ..
cmake --build .

You can pass the following arguments to CMake:

BUILD_SHARED                  to build with shared type library, otherwise static (default: true)
BUILD_DOCUMENTATION           to build the documentation, requires Doxygen (default: false)
BUILD_EXAMPLES                to build the examples (default: true)
BUILD_TESTS                   to build the unit tests (default: true)
BUILD_INTERNAL_TESTS          to build the unit tests testing private parts of the API (default: false)
BUILD_OMEMO                   to build the OMEMO module (default: false)
WITH_GSTREAMER                to enable audio/video over jingle (default: false)
QT_VERSION_MAJOR=5/6          to build with a specific Qt major version (default behaviour: prefer 6)

For building the OMEMO module additional dependencies are required.

Installing QXmpp

After building QXmpp, you can install the Headers, Libraries and Documentation using the following command:

Install from command line:

cmake --build . --target install

Examples

Look at the example directory for various examples. Here is a description of a few.

  • example_0_connected This example just connects to the xmpp server and start receiving presences (updates) from the server. After running this example, you can see this user online, if it's added in your roster (friends list).

  • example_1_echoClient This is a very simple bot which echoes the message sent to it. Run this example, send it a message from a friend of this bot and you will receive the message back. This example shows how to receive and send messages.

Documentation

You can find the API documentation for the latest stable QXmpp version here:

https://doc.qxmpp.org/

The API documentation of the master branch is also available:

https://doc.qxmpp.org/qxmpp-dev/

Supported Platforms

It should work on all the platforms supported by Qt. For a complete list of platforms support by Qt, see:

https://doc.qt.io/qt-5/supported-platforms.html

How to report a bug

If you think you have found a bug in QXmpp, we would like to hear about it so that we can fix it. Before reporting a bug, please check if the issue is already know at:

https://github.com/qxmpp-project/qxmpp/issues