Home

Awesome

libqmlbind

libqmlbind is a C library for creating QML bindings for other languages easily through exporting objects and classes to QML.

Build Status

Features

Code Structure

Mapping of Classes to the C interface

Ownership Conventions used in libqmlbind:

How to install

Mac + Homebrew

You can install libqmlbind via Homebrew on Mac. (using a custom tap)

> brew tap seanchas116/libqmlbind
> brew install libqmlbind

Arch Linux via AUR

For Arch Linux, you can find the latest release and the git master version of libqmlbind in the AUR.

How to build

Requirements

Build the Code

First, clone the repository with all its submodules:

> git clone --recursive git@github.com:seanchas116/libqmlbind.git

Alternatively, if you already cloned but forgot --recursive, use this inside libqmlbind:

> git submodule update --init --recursive

Use qmake to generate the Makefile:

# if you want to use your default compiler:
> qmake -r
# if you want to use clang:
> qmake -r QMAKE_CC=clang QMAKE_CXX=clang

and then build it:

> make

Run the Tests

From the main directory:

> cd test
> ./test -platform offscreen

Build the Documentation

Just run

> doxygen

from the project's main directory. You can then find the documentation in doc/html/index.html.

Alternatives

If you're not happy with libqmlbind's interface or features, you might be interested in DOtherSide, an alternative C library for creating QML bindings. While libqmlbind was designed with dynamic languages like ruby in mind, DOtherSide was designed for static languages like D. (You can use libqmlbind for static languages, too, though, you just won't need some parts of the API. E.g. in dynamic languages, you can hand over a classObject pointer in qmlbind_metaclass_new to implement a single dynamic version of qmlbind_client_callbacks for all classes, while in static languages, you would probably use something like templates to generate many static variants of qmlbind_client_callbacks for each class and hand over them, not needing the classObject pointer at all).