Command Line Toolsから見たXcode 5 (DP2)

OS X 10.9 (Mavericks) ではCommand Line Tools(以下CLTools)に含まれるコマンドのshimが最初からインストールされます。なので、XcodeやCLToolsをインストールしていない状態でも、

> which clang
/usr/bin/clang

と一見clangがインストールされているように見えます。しかしclangを実行しようとすると

> clang -v
xcode-select: note: no developer tools were found at '/Applications/Xcode.app', requesting install. Choose an option in the dialog to download the command line developer tools.

というメッセージが出て、CLToolsのインストールを促すダイアログがあらわれます。

f:id:esuwaishi:20130708140433p:plain

ここで「インストール」を選ぶとCLToolsのみがインストールされます。また、これまではXcode.appをインストールしてもCLToolsは別途インストールする必要がありましたが、今回からはCLToolsに含まれるコマンド、ヘッダ、framework、そしてライブラリ全てがXcode.appの中に含まれるようになりました。したがって、Xcode.appをインストールすればCLToolsを別途インストールする必要はありませんし、アンインストールする場合もXcode.appをゴミ箱に捨てるだけでCLToolsも一緒に削除されるようになりました。

/Applications以下にXcode.appをインストールした場合、CLToolsの中に含まれるコマンド、例えば/usr/bin/clangを起動した場合、このshimによって

/Applications/Xcode5-DP2.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang

が起動します。一方、Xcode.appをインストールしないでCLToolsだけをインストールした場合、これまではコマンド、ライブラリ、ヘッダは/usr以下 (/usr/bin, /usr/lib, /usr/include 等)にインストールされましたが、Xcode 5では

/Library/Developer/CommandLineTools/

以下にインストールされます。また、最終的には(現在はまだ未実装?)CLToolsもソフトウェア・アップデート経由でアップデートできるようになる模様です。このようにベースシステムから開発環境が完全に分離されアップデートや削除が簡単になったと思いますが、/usr/includeが存在しないUNIXというのは何か変な感じがします(笑)

その他の変更点としては、Xcode 4ではclang以外にgcc 4.2.1ベースのllvm-gccもインストールされましたが、Xcode 5ではなくなってしまいました(GDBも)。ただし、コマンドとしてはllvm-gccgccも残っており、これらを起動すると結局clangが実行されます。また、CVSとRCSも省かれてしまったので、これらを利用する必要がある場合は別途インストールする必要があります。