XcodeGen is a command line tool for generating Xcode projects from a declarative specification.
The tool solves the problem of Xcode project file merge conflicts and manual project configuration by generating .xcodeproj files from a YAML or JSON specification. It parses your folder structure on disk and automatically references source files while preserving the directory hierarchy. The spec defines targets, configurations, schemes, build settings, and other project options, with sensible defaults applied so you only customize what differs from the standard setup. This allows you to remove .xcodeproj from version control entirely, regenerating it on demand or in CI environments.
Teams managing complex Xcode projects with multiple targets and shared build settings benefit most from this approach. It suits projects where the folder structure on disk should drive the project organization, and where configuration as code is preferable to GUI-based setup. The tool handles multi-platform frameworks and can integrate Carthage dependencies automatically. You can distribute the spec across multiple files for sharing and overriding, and generate environment-specific schemes without manual duplication.
The project maintains active development with regular updates and bug fixes. The tool is distributed through multiple installation channels including package managers, making it accessible to different workflow preferences. Documentation is comprehensive, covering both the project spec format and general usage patterns. The codebase is written in Swift and available as both a command line tool and as a library that can be imported into other Swift packages.