Xcode のコマンドラインツールをターミナルから切り替える

プログラミングで出逢った出来事

Xcode 6.3-beta で Swift 1.2 が登場して、Swift 1.1 とは言語構文にも違いがあるものだから、どちらで作ったコードかで Xcode を正式版と Beta 版との使い分ける必要がたびたび出てきました。

特に CocoaPods とか git とかをターミナルから扱うときに Xcode を切り替えたいことがあったので、ターミナルからコマンドラインツールを切り替える方法を調べてみました。


Mac のターミナルから xcodebuild などを使ってビルドするためのツールは「コマンドラインツール」として Mac にインストールされています。

Xcode からであれば Xcode Preferences... からコマンドラインツールを切り替えることができますが、たとえば CocoaPods や git のようなツールをターミナルで使っているときに、わざわざ Xcode を起動して切り替えるのは面倒です。

ターミナルからコマンドラインツールを切り替える

コマンドラインツールは、ターミナルからでもxcode-select コマンドを使って切り替えられます。

たとえば、Xcode のベータ版が/Applications/Xcode-Beta.app としてインストールされている場合、このコマンドラインツールを使いたいときには、次のようにします。

sudo xcode-select -s /Applications/Xcode-Beta.app

OS X の管理アカウントのパスワードを尋ねられるので入力すれば、指定したパスにあるコマンドラインツールに切り替わります。


同様に、Xcode の正式版が/Applications/Xcode.app としてインストールされていて、それに切り替えたい場合は次のとおりです。

sudo xcode-select -s /Applications/Xcode.app

Xcode のインストールされているパス (/Applications) や、アプリケーション名の後の拡張子 (.app) は省略できないようなので、きちんと入力する必要があります。

選択されているコマンドラインツールを確認する

次のコマンドを実行すると、現在選択されているコマンドラインツールのパスを取得できます。

xcode-select -p

このようにすると、たとえば次のようなパスが得られます。

/Applications/Xcode.app/Contents/Developer

これを使えば、たとえば自作スクリプトを Beta 版の Xcode で実行してほしいときに、現在のコマンドラインツールをチェックして、必要に応じて Beta 版への切り替えを促すみたいなこともできそうですね。