mirror of
https://gitea.windcorp.ru/Wind-Corporation/Progressia.git
synced 2025-04-21 19:20:45 +03:00
94 lines
2.9 KiB
Markdown
94 lines
2.9 KiB
Markdown
# Development setup guide
|
||
|
||
This document provides instructions for setting up a development environment
|
||
for Progressia.
|
||
See also
|
||
[Building Guide](BuildingGuide.md)
|
||
and
|
||
[IDE setup guides](ide_setup).
|
||
|
||
To make development easier, contributors should be using a few tools. Included
|
||
with the project are configurations and scripts for these tools:
|
||
- [clang-tidy](https://clang.llvm.org/extra/clang-tidy/) – performs static
|
||
code analysis for C++
|
||
- [clang-format](https://clang.llvm.org/docs/ClangFormat.html) – formats C++
|
||
source code
|
||
- Vulkan validation layers – checks for errors in Vulkan API usage at runtime
|
||
(see below for details)
|
||
- [memcheck](https://valgrind.org/docs/manual/mc-manual.html)
|
||
(part of [valgrind](https://valgrind.org/)) – performs runtime memory
|
||
error detection on Linux
|
||
|
||
Additionally, a git pre-commit hook prevents committing code that is formatted
|
||
incorrectly, does not compile or produces warnings.
|
||
|
||
## Basic setup
|
||
Follow [Building Guide](BuildingGuide.md) instructions before proceeding.
|
||
|
||
Debian/Ubuntu:
|
||
```bash
|
||
# Install clang-tidy and clang-format-diff
|
||
sudo apt update && sudo apt install -y \
|
||
clang-tidy clang-format
|
||
|
||
# Enable DEV_MODE (sets up git pre-commit hook)
|
||
cmake -S . -B build -DDEV_MODE=ON
|
||
```
|
||
|
||
Fedora:
|
||
```bash
|
||
# Install clang-tidy and clang-format-diff
|
||
sudo dnf install -y \
|
||
clang-tools-extra clang
|
||
|
||
# Enable DEV_MODE (sets up git pre-commit hook)
|
||
cmake -S . -B build -DDEV_MODE=ON
|
||
```
|
||
|
||
Windows: _see [IDE setup guides](ide_setup)._
|
||
|
||
## Pre-commit git hook
|
||
|
||
A
|
||
[git pre-commit hook](https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks)
|
||
is installed to correct formatting and check for compilation/linting issues.
|
||
This check can be bypassed with
|
||
`git commit --no-verify`
|
||
in case of dire need.
|
||
|
||
The hook runs `tools/pre-commit.py`, which formats modified files and ensures
|
||
that `cmake --build build` executes without errors. Several git operations are
|
||
performed by `pre-commit.py`; run
|
||
`tools/pre-commit.py restore`
|
||
to restore the state of the repository in case the hook crashes.
|
||
|
||
The list of directories with source code to format and the list of source code
|
||
filename extensions are hard-coded into the Python script.
|
||
|
||
## Vulkan validation layers
|
||
|
||
LunarG validation layers are extremely useful when debugging Vulkan code.
|
||
The official
|
||
[Vulkan tutorial](https://vulkan-tutorial.com/Development_environment)
|
||
has detailed instructions for all platforms.
|
||
|
||
Use CMake option `VULKAN_ERROR_CHECKING` to enable the use of validation
|
||
layers.
|
||
|
||
Debian/Ubuntu users can install this dependency using APT:
|
||
```bash
|
||
apt install vulkan-validationlayers-dev
|
||
```
|
||
|
||
Fedora users can install this dependency using dnf:
|
||
```bash
|
||
dnf install vulkan-validation-layers-devel
|
||
```
|
||
|
||
Windows users can install this dependency when installing LunarG distribution.
|
||
|
||
## memcheck
|
||
|
||
`tools/valgrind-memcheck-suppressions.supp` contains useful suppressions for
|
||
memcheck.
|