Skip to content

Dependencies

David Lazarescu edited this page Apr 1, 2024 · 12 revisions

Librum tries to have as few dependencies as possible while also keeping them up to date. Librum currently relies on four libraries:

  • Qt 6.5
  • boost-ext::di
  • rapidfuzz-cpp
  • mupdf
  • googletest

All dependencies (except Qt6) are build from source (see libs folder) and compiled directly into the application to avoid any cross platform compatibility issues.

Qt6

Librum uses Qt6 all over the application for e.g.:

  • The GUI
  • More types with higher abstractions (e.g. QDateTime, QString, ...)
  • Communication across classes and layers via signals and slots

boost-ext::di

Librum uses dependency injection in order to archive an easier testable and less coupled system, therefor it uses the dependency injection library boost-ext::di. It simplifies construction of dependencies, thus making the actual injection much less painful.

rapidfuzz-cpp

To be able to sort libraries of books by query strings, Librum uses rapidfuzz-cpp. This library provides an easy interface to Levenshtein calculations that Librum uses to sort books by similarity (Fuzz searching).

mupdf

Librum uses mupdf to render, edit, annotate and transform pages. It is a very fast, cross platform rendering library that makes it possible for Librum to display books.

googletest

As a testing framework, Librum uses googletest (and googlemock).

Clone this wiki locally