LMDB Abstraction Layer. A library to ease interactions with LMDB
Go to file
blue 96d7d9ef64
All checks were successful
Main LMDBAL workfow / Archlinux (push) Successful in 40s
First attempt to make RAII cursors, no tests yet
2023-10-25 19:18:23 -03:00
.gitea/workflows Release CI Workflow 2023-10-14 15:09:50 -03:00
cmake cmake magick to make package usable and discoverable by another CMake projects, readme, pkgbuild 2023-03-22 19:30:41 +03:00
doc tests for transaction RAII behaviour, transaction documentation, minor doc fixes 2023-10-18 12:44:53 -03:00
packaging/Archlinux First attempt to make RAII cursors, no tests yet 2023-10-25 19:18:23 -03:00
src First attempt to make RAII cursors, no tests yet 2023-10-25 19:18:23 -03:00
test First attempt to make RAII cursors, no tests yet 2023-10-25 19:18:23 -03:00
CHANGELOG.md First attempt to make RAII cursors, no tests yet 2023-10-25 19:18:23 -03:00
CMakeLists.txt First attempt to make RAII cursors, no tests yet 2023-10-25 19:18:23 -03:00
LICENSE.md licensing, initial documentation initiative 2023-03-23 20:27:46 +03:00
README.md an attempt to run tests 2023-08-19 22:37:21 -03:00

LMDBAL - Lightning Memory Data Base Abstraction Level

AUR license AUR version Liberapay patrons Documentation

Prerequisites

  • a compiler (c++ would do)
  • Qt 5 or higher (qt5-base would do)
  • lmdb
  • CMake 3.16 or higher
  • Doxygen (optional, for documentation)
  • gtest (optional, for tests)

Using with CMake

As a system library

If you're using LMDBAL as a system library you probably have no control over it's build options. The easiest way to include the project is to add following

find_package(lmdbal)
if (LMDBAL_FOUND)
    target_include_directories(yourTarget PRIVATE ${LMDBAL_INCLUDE_DIRS})
    target_link_libraries(yourTarget PRIVATE LMDBAL::LMDBAL)
endif()

As an embeded subproject

If you're using LMDBAL as a embeded library you might want to control it's build options, for example you can run

set(BUILD_STATIC ON)

before including the library in your project. This will set the library to be build in a static mode.

Then you want to run something like this

add_subdirectory(pathTo/yourEmbedded/libraries/lmdbal)
add_library(LMDBAL::LMDBAL ALIAS LMDBAL)
...

target_link_libraries(yourTarget PRIVATE LMDBAL::LMDBAL)

The headers are added as PUBLIC so you might not even need to target_link_libraries them

Building

LMDBAL uses CMake as a build system.

Please check the prerequisites and install them before building.

Here is an easy way to build a project

$ git clone https://git.macaw.me/blue/lmdbal
$ cd lmdbal
$ mkdir build
$ cd build
$ cmake .. [ *optional keys* ]
$ cmake --build .
$ cmake --install . --prefix install

This way will create you a lmdbal/build directory with temporary files, and lmdbal/build/install with all the export files for installation to the system.

After cmake .. you can specify keys to alter the building process. In this context building keys are transfered like so

cmake .. -D KEY1=VALUE1 -D KEY2=VALUE2 ...

List of keys

Here is the list of keys you can pass to configuration phase of cmake ..:

  • CMAKE_BUILD_TYPE - Debug just builds showing all warnings, Release builds with no warnings and applies optimizations (default is Debug);
  • BUILD_STATIC - True builds project as a static library, False builds as dynamic (default is False);
  • BUILD_TESTS - True build unit tests, False does not (default is False);
  • BUILD_DOC - True build doxygen documentation, False does not (default is False);
  • BUILD_DOXYGEN_AWESOME - True build doxygen awesome theme if BUILD_DOC is also True (default is False);
  • QT_VERSION_MAJOR - 5 links against Qt5, 6 links agains Qt6, there is no default, so, if you didn't specify it the project will chose automatically;

Running tests

If you built the library with -D BUILD_TESTS=True, then there will be lmdbal/build/tests/runUnitTests executable file. You can simply run it as

./runUnitTests

if you're in the same directory with it

License

This project is licensed under the GPLv3 License - see the LICENSE.md file for details