XcodesOrg /xcodes

The best command-line tool to install and switch between multiple versions of Xcode.

★ 4,891⑂ 193👁 30⑃ 171● 328▤ 39◈ 0
SwiftMITCreated 2019-02-22
4,891
stars
193
forks
30
watchers
171
prs
328
issues
39
releases
0
discussions

README

xcodes

The best command-line tool to install and switch between multiple versions of Xcode.

_If you're looking for an app version of xcodes, try Xcodes.app._

!CI Status

!Header Image

 :tada: Announcement

Xcodes is now part of the XcodesOrg - read more here

 Installation

 Homebrew (Preferred)

sh
brew install xcodesorg/made/xcodes


These are Developer ID-signed and notarized release builds and don't require Xcode to already be installed in order to use.

Other methods:


Download a release

Download the latest release from the Releases page. These are Developer ID-signed release builds and don't require Xcode to already be installed in order to use.



Using Mint

sh
mint install XcodesOrg/xcodes





Build from source

Building from source requires a Swift 6.0 or newer toolchain (Xcode 16 or later).
The package declares macOS 13 as its minimum macOS deployment target; the selected
Xcode version may require a newer macOS version to run. Install and select a full
Xcode installation before building, so this is not an option for setting up a
computer from scratch. Swift Package Manager downloads dependencies automatically.

sh
git clone https://github.com/XcodesOrg/xcodes
cd xcodes
make install
 Or install into a user-owned directory
make install prefix="$HOME/.local"


The default installation location is /usr/local/bin/xcodes, which must be
writable. The Makefile variable is lowercase prefix, not PREFIX; executables
are installed into /bin. Add that directory to your PATH if needed.
You can also override bindir directly.

make builds without installing. Both make and make install produce a
universal arm64 and x86_64 executable using release configuration, with Swift
optimization disabled (-Onone) as a historical compiler workaround and the
build sandbox disabled. Local builds and installation do not invoke the
Makefile's Developer ID signing or notarization steps.

 Build output path troubleshooting

The Makefile expects .build/apple/Products/Release/xcodes. Some toolchains
instead produce .build/out/Products/Release/xcodes, also accessible through
the .build/release symlink. If the build succeeds but installation reports
No such file or directory for the expected executable, check the build output
and override RELEASEBUILDDIR with the actual executable path:

sh
make install prefix="$HOME/.local" \
  RELEASEBUILDDIR="$PWD/.build/out/Products/Release/xcodes"
"$HOME/.local/bin/xcodes" version
"$HOME/.local/bin/xcodes" --help


This override was verified with an installation into a temporary prefix:
the installed executable contained both arm64 and x86_64 architectures, reported
version 2.1.0, and successfully displayed help. The default build succeeded,
but installation required the path override on that toolchain. A warning about
x86_64 being deprecated for the active macOS 27.0 deployment target did not
prevent the universal build from completing. These were build and CLI smoke
checks, not a test-suite run.

Run make clean to remove .buil

Top issues

Latest release

2.2.0 2.2.0 2026-11-11
If you installed xcodes with homebrew you can upgrade with brew upgrade xcodesorg/made/xcodes.

 Changes

 docs: clarify build and installation requirements (498) @ratfreezone-lab, mad max, @MattKiazyk, @warp-agent
 Support Apple AEA archives in the xcodes CLI (501) @MattKiazyk

Snapshot: 2026-11-11T15:31:17Z · Data license Apache-2.0 · JSON