I typically don't like including generating files in tree. But like to make an exception for this, since this forms the canonical list of options one would need to go through when building with alternative build systems.