|
bpmn++
A BPMN parser library, written in C++
|
This library provides a parser library for BPMN 2.0 allowing easy access to all elements and children (no getters or setters).
A C++23 compiler, GCC 15.2 or Clang 18.1.3 or later, CMake 3.26.4 or later, and git.
Xerces-C++ 3.2.x, schematic++ and Catch2 are fetched automatically unless they are installed already.
This project has two preset configurations that are created in folders build/release and build/debug. Presets are configured the first time they are needed or when running make configure.
| Preset | Folder | Compiled with | Used for |
|---|---|---|---|
| release | build/release | -O3 -DNDEBUG, assertions off | building, documentation, installing |
| debug | build/debug | -O3 -g, assertions live | development, tests |
You can build the single header and the library by
or
with the preset indicated in parentheses. This creates build/release/include/bpmn++.h and build/release/lib/libbpmn++.a, respectively the same two files under build/debug.
To (build and) run the test suite, use
Once the tests are built (and run) with make tests, selected tests carrying a given Catch2 tag can be run with
The test binary reads diagram.bpmn by a relative path, so it is run from the tests folder.
To generate docs in build/release/docs/html folder, run
To install, run
to copy
into /usr/local.
Alternatively, run
to install these files into the <target> folder.
A consumer can resolve the library with
Nothing further is needed when bpmn++ was installed into /usr/local. For a custom target folder, add -DCMAKE_PREFIX_PATH=<target> when configuring the consumer.
A minimum version can be required, for instance find_package(bpmnpp 0.1.0 REQUIRED), which accepts any later 0.1.x and refuses 0.2.0.
Remove the installed files, where <target> is /usr/local or the folder given when installing.
The file build/release/install_manifest.txt lists the installed files.
An example using the library can be found in the [example folder](example). After installing, build it with
Explicitly provide include and lib folder by -I<target>/include -L<target>/lib if needed.