Xcode 4.2 でコンパイラが正しく動作しない
SPECIAL
Apple LLVM compiler や LLVM GCC でのコンパイルに失敗する
構文チェックがしっかりしていて不必要にバグを見逃しにくかったり、コンパイル速度やビルドしたバイナリの実行速度が速いなど、何かとメリットの大きい気がする Apple LLVM compiler ですけど、とあるプロジェクトをこのコンパイラでビルドしたところ、次のようなエラーが発生してしまいました。
Apple LLVM compiler 3.0 Error
Command /Xcode4.2 - iOS 5 SDK beta 6/Platforms/iPhoneOS.platform/Developer/usr/bin/clang failed with exit code 1
そもそも Apple LLVM compiler が起動した直後に発生しているような感じで、以前に GCC コンパイラとの互換性のために発生した Xcode のコンパイラを Apple LLVM に変えてみる の中で発生していたエラーとは様子が随分違う感じです。
今回のこのエラーは、iOS 5 beta 6 用の Xcode 4.2 を、正式の Xcode 4.1 とは別にインストールして、それでビルドをしているときに発生しました。
試しにコンパイラを LLVM GCC に設定してビルドみると、何故だかこれまでちゃんとビルドできていたはずの #inport の指定が、<> による指定のものも "" による指定のものも、自分で用意したファイルの相対パスでの読み込み指定のところが "No such file or directory." になってしまいます。
"Header Search Paths" を設定してあるにも関わらず、その先に存在するはずのファイルを見つけてくれない感じでした。
最初は、今回インストールしたのが iOS 5 beta 6 用の Xcode 4.2 だからなのかとも思ったのですけど、どうやらこれは、Xcode をインストールしたパスに問題があったみたいです。
今回は Xcode 4.2 を Xcode 4.1 とは別のフォルダーへインストールしたのですけど、このときにインストールしたフォルダーの名前が "/Xcode4.2 - iOS 5 SDK beta 6" というフォルダーだったのですけど、この名前が問題だったみたいです。
フォルダー名に "-" がスペース区切りで入っているのが影響して、実行時に予期しないオプションが設定されたものと扱われてしまったのかもしれません。
改めて "/Xcode4.2-iOS5beta6" という名前のフォルダーに Xcode 4.2 をインストールし直してみたところ、Apple LLVM compiler ではビルドが実行できるようになり、LLVM GCC でも #include がイメージ通りに動作してくれるようになりました。