There are several possibilities how to do it, but I'd like to divide it into a few independent stages. For example, we could generate the city layout as a collection of areas (industrial, residential ..), and then another component populates the generated polygon sectors with buildings. Alternatively we could use
OSM data as the input for the second stage, so the generator as a whole could be usable in different scenarios.
But for flight simmers the best path would be the generation from OSM data. In that case, if you wanted to add another city, you'd first create the vector map in OSM, that can be then imported as a source for the generator.