Files
libloot/cpp
2025-06-11 19:06:08 +01:00
..
2025-04-29 17:42:46 +01:00
2025-04-29 17:42:46 +01:00
2025-04-29 17:42:46 +01:00
2025-06-11 19:06:08 +01:00
2025-06-11 19:06:08 +01:00
2025-06-11 19:06:08 +01:00

libloot-rs C++ wrapper

This is a wrapper around libloot that provides a C++ interface that's ABI-compatible with libloot v0.27.0.

The wrapper has two layers:

  • a static library built using Cargo, which provides a C++ interface
  • a shared library built using CMake, which wraps that C++ interface to provide another that is ABI-compatible with C++ libloot.

Building

libloot uses the following CMake variables to set build parameters:

Parameter Values Default Description
BUILD_SHARED_LIBS ON, OFF ON Whether or not to build a shared libloot binary.
LIBLOOT_BUILD_TESTS ON, OFF ON Whether or not to build libloot's tests.
LIBLOOT_INSTALL_DOCS ON, OFF ON Whether or not to install libloot's docs (which need to be built separately).
RUN_CLANG_TIDY ON, OFF OFF Whether or not to run clang-tidy during build. Has no effect when using CMake's MSVC generator.

Windows

To build a release build with debug info:

cmake -B build .
cmake --build build --parallel --config RelWithDebInfo

To build a debug build:

cmake -B build .
cmake --build build --parallel --config Debug

Linux

To build a release build with debug info:

cmake -B build . -DCMAKE_BUILD_TYPE=RelWithDebInfo
cmake --build build --parallel

to build a debug build:

cargo build
cmake -B build . -DCMAKE_BUILD_TYPE=Debug
cmake --build build --parallel

Tests

The build process also builds the test suite by default. To skip building the tests, pass -DLIBLOOT_BUILD_TESTS=OFF when first running CMake.

If built, the tests can be run using:

ctest --test-dir build --output-on-failure --parallel -V

Documentation

Install Doxygen, Python and uv and make sure they're accessible from your PATH, then run:

cd ../docs
uv run -- sphinx-build -b html . build/html

Packaging

To package the build:

cpack --config build/CPackConfig.cmake -C RelWithDebInfo