When using Swift Package Manager how can I generate an Xcode project file for development When using Swift Package Manager how can I generate an Xcode project file for development swift swift

When using Swift Package Manager how can I generate an Xcode project file for development


Update: as mentioned in other answers, you can now generate Xcode project files with this command:

swift package generate-xcodeproj

Original answer:

The Swift Package Manger (SPM) is cross platform, It works on Mac and Linux.The Xcode is Mac OS only, so I don't think SPM will be hard integrate to work with Xcode.

SPM can do 2 things:

  • Build swift source code into modules (Executable and Library)
  • Fetch dependencies (from git or local path)

The SPM work only with Source code, folders and files. It doesn't know anything about Xcode.
Also it is mentioned that in the future Apple plans to add support for other languages not only Swift and Objc.

My answer: SPM will not ingrate with Xcode. But because it's open-source anyone can just make its own fork and add custom feature that would generate Xcode specific files.


Update (2021/05/23):

With Xcode having gained official support for Swift Packages the recommended way to create packages these days is from within Xcode via "Xcode > File > New > Swift Package".


Update (2020/11/20):

With PR 3062 merged generate-xcodeproj will soon be marked as deprecated.


Original answer:

As of PR #174 on the swift-package-manager project, there exists an option for generating an Xcode project file in root directory of the package:

$ swift package generate-xcodeproj

Note: Earlier builds used:

$ swift build --generate-xcodeproj

It will officially be part of Swift's 3.0 release.
But it is already available with Xcode Swift DEVELOPMENT Snapshot 2016-03-24 or later!


All you need to do now, if you had Xcode 11 installed is just run this command and xcode-tools will automatically open the appropriate Package.swift and resolve as an project for you to open in Xcode:

$ xed .

Pre 2020:

I wrote a small command line tool for that

it's called spawn: https://github.com/vinhnx/spawn

Basically, it's just a small combination of repetitive commands when you want to try out a SPM package:

$ swift package update # update or resolve package dependencies$ swift package generate-xcodeproj # generate a .xcodeproj to edit on Xcode$ xed . # open generated .xcodeproj automatically