Files
libloot/README.md
T

72 lines
4.2 KiB
Markdown
Raw Permalink Normal View History

2018-11-02 20:46:36 +00:00
# libloot
2025-05-11 14:48:27 +01:00
![CI](https://github.com/loot/libloot/actions/workflows/ci.yml/badge.svg?branch=master&event=push)
[![Documentation Status](https://readthedocs.org/projects/loot-api/badge/?version=latest)](http://loot-api.readthedocs.io/en/latest/?badge=latest)
2014-12-07 19:59:18 +00:00
2013-07-19 20:38:24 +01:00
## Introduction
2025-04-30 08:43:37 +01:00
LOOT is a plugin load order optimisation tool for Starfield, TES III: Morrowind, TES IV: Oblivion, TES IV: Oblivion Remastered, TES V: Skyrim, TES V: Skyrim Special Edition, TES V: Skyrim VR, Fallout 3, Fallout: New Vegas, Fallout 4, Fallout 4 VR and OpenMW. It is designed to assist mod users in avoiding detrimental conflicts, by automatically calculating a load order that satisfies all plugin dependencies and maximises each plugin's impact on the user's game.
2014-03-31 19:06:58 +02:00
LOOT also provides some load order error checking, including checks for requirements, incompatibilities and cyclic dependencies. In addition, it provides a large number of plugin-specific usage notes, bug warnings and Bash Tag suggestions.
2018-11-02 20:46:36 +00:00
libloot provides access to LOOT's metadata and sorting functionality, and the LOOT application is built using it.
2013-07-19 15:13:51 +01:00
2016-07-25 08:37:55 +01:00
## Downloads
2016-07-20 19:33:38 +01:00
2023-06-05 18:00:22 +01:00
Releases are hosted on [GitHub](https://github.com/loot/libloot/releases).
Snapshot builds are available as artifacts from [GitHub Actions runs](https://github.com/loot/libloot/actions), though they are only kept for 90 days and can only be downloaded when logged into a GitHub account. To mitigate these restrictions, snapshot build artifacts include a GPG signature that can be verified using the public key hosted [here](https://loot.github.io/.well-known/openpgpkey/hu/mj86by43a9hz8y8rbddtx54n3bwuuucg), which means it's possible to re-upload the artifacts elsewhere and still prove their authenticity.
The snapshot build artifacts are named like so:
2016-07-20 19:33:38 +01:00
```
2023-06-05 18:00:22 +01:00
libloot-<last tag>-<revisions since tag>-g<short revision ID>_<branch>-<platform>.<file extension>
2016-07-20 19:33:38 +01:00
```
2018-11-02 20:46:36 +00:00
## Building libloot
2013-07-19 15:13:51 +01:00
2020-08-09 14:03:01 +01:00
Refer to `.github/workflows/release.yml` for the build process.
2015-08-27 12:33:20 +01:00
2016-09-17 22:21:41 +01:00
### Linux
2015-08-27 12:33:20 +01:00
2021-02-06 08:55:07 +00:00
The build process assumes that you have already cloned the libloot repository,
that the current working directory is its root, and that the following
applications are already installed:
2019-02-11 21:48:50 +00:00
- `cmake`
2021-02-06 08:55:07 +00:00
- `curl`
2019-02-11 21:48:50 +00:00
- `git`
2021-02-06 08:55:07 +00:00
- `pip3` (and therefore Python 3)
2019-02-11 21:48:50 +00:00
- `cargo` and the rest of the Rust toolchain (e.g. via
[rustup](https://rustup.rs/))
- `wget`
2021-02-06 08:55:07 +00:00
The list above may be incomplete.
2015-08-27 12:33:20 +01:00
2016-09-17 22:21:41 +01:00
### CMake Variables
2015-08-27 12:33:20 +01:00
2018-11-02 20:46:36 +00:00
libloot uses the following CMake variables to set build parameters:
Parameter | Values | Default |Description
----------|--------|---------|-----------
2018-11-02 20:46:36 +00:00
`BUILD_SHARED_LIBS` | `ON`, `OFF` | `ON` | Whether or not to build a shared libloot binary.
2024-04-26 23:45:11 +01:00
`LIBLOOT_BUILD_TESTS` | `ON`, `OFF` | `ON` | Whether or not to build libloot's tests.
2024-04-27 12:20:52 +01:00
`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.
2024-04-27 10:05:00 +01:00
`ESPLUGIN_URL` | A URL | A GitHub release archive URL | The URL to get a source code archive from. This can be used to supply a local path if the archive has already been downloaded (e.g. for offline builds).
`LIBLOADORDER_URL` | A URL | A GitHub release archive URL | The URL to get a source code archive from. This can be used to supply a local path if the archive has already been downloaded (e.g. for offline builds).
`LOOT_CONDITION_INTERPRETER_URL` | A URL | A GitHub release archive URL | The URL to get a source code archive from. This can be used to supply a local path if the archive has already been downloaded (e.g. for offline builds).
`FETCHCONTENT_SOURCE_DIR_YAML-CPP` | A path | Unset | The path to an existing yaml-cpp source folder to build yaml-cpp from. Note that libloot relies on [a fork of yaml-cpp](https://github.com/loot/yaml-cpp) to support YAML merge keys in metadata files. If unset, CMake will download the source from GitHub when the libloot build is configured.
2025-01-26 16:16:02 +00:00
You may also need to set `CMAKE_PREFIX_PATH` if CMake cannot find Boost.
2014-11-11 21:38:40 +00:00
2016-09-19 17:45:25 +01:00
## Building The Documentation
2016-08-13 19:55:07 +01:00
2025-05-12 17:21:58 +01:00
Install [Doxygen](https://www.doxygen.nl/), Python and [uv](https://docs.astral.sh/uv/getting-started/installation/) and make sure they're accessible from your `PATH`, then run:
2016-08-13 19:55:07 +01:00
```
2025-05-12 17:21:58 +01:00
cd docs
uv run -- sphinx-build -b html . ../build/docs/html
2016-08-13 19:55:07 +01:00
```