General
Project root
The project root is defined as the directory where the root configuration file resides.
Build Directory
The build directory is the directory where fabricate stores its own and ninja configuration. It is also where dependencies are downloaded and where ninja stores build output.
Dependencies
Fabricate’s philosophy on dependencies differs greatly from its counterparts. Instead of trying to build the projects itself it exposes an interface for you (the user) to tell fabricate how to build them. This is more tedious but in general is a more flexible solution that can be adapted for projects using any build system.
Dependencies are currently only supported as git repositories. Check out fab.dependency() and Dependency.
Ninja
Fabricate is a meta build system. This means Fabricate does not build anything itself, rather it generates instructions for another build system. This other build system is Ninja, it is the one and only build system supported by Fabricate.
Compile Commands
Fabricate will generate a “compile_commands.json” into the build directory by default. Note that only rule objects that turn on the compdb flag will actually produce output into compile commands.