The lava project is in fact a bundle of multiple projects.
The core principles of lava are:
- Be up-to-date with C++ standard (currently set to C++17) to make your code-life easier ;
- Keep your APIs clean (each project has a public interface with no more information than needed) ;
- Decouple as much as you can, keeping different concepts encapsulated.
lava uses Premake as build configuration system, but some dependencies use:
Moreover, C++17 features are highly used, be sure to have a recent compiler (gcc >= 7).
- download Premake v5 and install it from your platform ;
./scripts/setup.shto install submodules and download dependencies ;
./scripts/build.shto compile everything (with examples) ;
- find all executables in
NOTE On linux, to use Wayland, either edit
NOTE To compile on release, one can use
As a daily developper, one should use:
./scripts/run.sh <target-name> [debug].
This will enable Vulkan's validation layer, check dependencies,
compile only what's necessary, and run the associated executable.
If you don't know any target name, run the command without any.
debug at the end of the command, will launch
Compiling on Windows
In order to compile on Windows, you'll need to set-up a
so that the commands specified in the above section work too.
Fact is, compiling the project with Microsoft Visual Studio Compiler has never been
tested, and I personally won't even try. But have no fear, all the projects are
- download and install some git bash environment for windows ;
- download and install MinGW
x86_64-posix-sehin the readme with a recent
- be sure to have
gccfindable in your PATH.
You can then follow the contributing guide with
./scripts/setup.sh && ./scripts/build.sh.
NOTE During the set-up phase, on Windows, you might be prompt with Vulkan SDK confirmation dialog. You have to accept.
- Have doxygen installed on your system ;
cd doc/technical && doxygen doxygen-config.xmlto generate technical documentation.
Everything lava needs is downloaded via Premake to
Current awesome dependencies are:
NOTE The one guideline concerning dependencies is to not include within this repository any external source, keeping the project light-weight and up-to-date. The one drawback is that compiling this repository in the future could be impossible because of removed or changed projects. If so, a new repository should be created containing the no-longer-available sources of concerned project.