# Building ## Build steps ```bash git clone https://codeberg.org/perseas/perseid.git cd perseid cmake -B build -DCMAKE_BUILD_TYPE=Debug cmake --build build -j$(nproc) ``` ### Build targets | Target | Description | |--------|-------------| | `dbtoyaml` | Database-to-YAML CLI tool | | `yamltodb` | YAML-to-database CLI tool | | `cmdargs` | Shared command-line parsing for the CLI tools | | `database` | Database, Database_map, and Config classes | | `dbobject` | Schema, table, column, constraint classes | | `_test` (see below) | dbobject unit tests (boost::ut) | | `test_` (see below) | object integration tests (Catch2) | | `reldb_integration` | reldb integration tests (Catch2) | | `test_filmversions` | Functional migration tests (Catch2) | There is generally one unit test and one integration test for each kind of database object. ### Test databases Running the integration suite requires a local PostgreSQL server and a test database. Functional tests require an additional database. See [testing](testing.md). ## Documentation The `docs` target builds the documentation by default. ### Building documentation ```bash pip install -r docs/requirements.txt cmake --build build --target docs ``` This runs Doxygen to extract API docs, then Sphinx to generate the HTML site in `build/docs/html/`.