Note
About this project
This is my personal sandbox for testing modern C++ features, exploring project architectures, and experimenting with graphics programming.
🎯 Abstract Goal: To build a functional 3D game engine from scratch using C++.
This project uses Git Submodules. It is crucial to include them during the clone process.
Use the --recursive flag to ensure all dependencies are downloaded:
git clone --recursive https://github.com/GrinlexGH/skylabs.gitIf the folder is already on your disk but submodule folders are empty, run this command in the project root:
git submodule update --init --recursiveImportant
Using pre-commit is required before contributing. It trims trailing whitespace, fixes line endings, and prevents committing merge conflicts or invalid filenames.
-
Install pre-commit:
- For CLI users (within Python venv):
uv pip install pre-commit
- For GitHub Desktop / GUI clients: Install
pre-commitglobally (e.g., viascoop install pre-commitor system Python). GUI apps cannot access tools isolated inside a virtual environment.
- For CLI users (within Python venv):
-
Register the git hooks:
pre-commit install
Hooks will run automatically before every git commit. To run checks manually on all files:
pre-commit run --all-filesEnsure you have the following tools installed before compiling:
| Tool | Requirement |
|---|---|
| CMake | Latest version |
| Ninja | Latest version |
| C++ Compiler | Latest MSVC / GCC / Clang |
| Conan | Latest version |
See detailed guide in BUILD.md
Tip
It is highly recommended to check out Scoop, an incredibly convenient package manager for Windows.
On Windows, it is recommended to use Visual Studio with LLVM/Clang.
Latest version of Conan is available in pip:
uv venv
# For Windows
.venv\Scripts\activate
# For Linux
source .venv/bin/activate
uv pip install -U -r ./requirements.txtCreate default profile:
conan profile detect --forceAdd the local remote:
This project uses a custom Conan recipe index.
conan remote add skylabs ./conan/conan-recipes -t local-recipes-index -fInstall global conan config:
Caution
This will overwrite your global Conan configuration.
conan config install ./conan/conan-config/config# Install dependencies
# For Windows
conan install . -pr clang-llvm -r skylabs -r conancenter -s build_type=Debug -s compiler.runtime_type=Debug --build=missing
# For Linux
conan install . -pr clang-linux -r skylabs -r conancenter -s build_type=Debug --build=missing
# Configure project
cmake --preset conan-debug
# Build
cmake --build build