// This configuration file is for new project so that they can setup the configuration
// on the repository side. It build nothing, just create an empty project.
[]
