This time of year it’s common to have multiple versions of Xcode installed.
Today we’re going to learn how to tell our system which version of Xcode‘s tools to use when working with Xcode from the command line. But first we’ll check out a helpful tool to actually install Xcode from command line.
Let’s dive in.
xcode-install and it can be found on Github right here.
We can install it with:
gem install xcode-install`
Once that’s finished, we can list the versions of Xcode that are available to install from the command line like this:
Which at the time of this writing will print:
8 8.1 8.2 8.2.1 (installed) 8.3 (installed) 8.3.1 8.3.2 8.3.3 (installed) 9 beta 4
xcode-install only prints the last few major versions.
(Sidenote: For fun and nostalgia try running
xcversion list --all to print all the available versions of Xcode going all the way back to
4.3 for OS X Lion ?).
We can install a version like this:
xcversion install "9 beta 4"
We’ll be prompted for our Apple Developer credentials which will be stored in our Keychain, and then the version will be download, installed, and moved into place, all without leaving the command line.
Next we’ll need a way to switch to the new version we just installed.
The tool we’ll be working with is already installed on our Mac and is called
It’s a straightforward, single-purpose utility that essentially controls which path on disk gets run when we run
xcodebuild, etc. from our command line.
Let’s first check out which version of Xcode we’re currently using:
Which (by default) will print:
(Note: This is what’s printed for versions of Xcode installed from the App Store).
Next, lets take a look at all of the versions of Xcode we currently have installed.
Here we’re going to
Xcode inside of our
ls /Applications | grep Xcode
Which (for example) will print:
Xcode-7.3.1.app Xcode-8.2.1.app Xcode-8.app Xcode-9-beta-4.app Xcode.app
All we need to do to override the default Xcode path is pass the path of one of these Xcode directories in with the
sudo xcode-select --switch /Applications/Xcode-9-beta-4.app
We’ll need the
sudo since this
xcode-select is working on a system-wide level.
Also, note how we’ve omitted the
/Contents/Developer bit from the path,
xcode-select will infer that for us).
Now when we run
xcodebuild, etc. from our command line we’ll be using the Xcode 9 Beta version of each tool.