Xcode4 の Derived Data フォルダー変更時の留意点

SPECIAL


Xcode4 の Derived Data フォルダー変更時の留意点

Xcode4 では、ビルドされたファイルを "Derived Data" フォルダーに保存するようになっているようです。

この "Derived Data" フォルダーの場所は Xcode4 の [Preferences] 設定の [Locations] のところで変更できるようになっています。

ただ、この "Derived Data" フォルダーの場所を変更してみたところ、ビルドが上手く出来なくなってしまったことがあったので、備忘録としてその辺りを記しておくことにします。

ワークスペース内の静的ライブラリをリンクし直す

まず、ビルドの出力場所が変わる影響か、Xcode ワークスペースを使用して、静的ライブラリとアプリケーションとを制作している環境で、アプリケーションにリンクされている静的ライブラリのパスが、不適切になってしまうことがありました。

具体的には、静的ライブラリは新しい "Derived Data" フォルダーに生成されるのに、アプリケーションの "Build Phases" に登録されている "Link Binary With Libraries" のパスは古い "Derived Data" フォルダーを指しているといった具合です。

このままビルドしようとすると、リンク周りでエラーが出てしまう様子です。

これを解消するために、ワークスペース内の既にリンクされている静的ライブラリをいったんリンク解除して、再度リンクし直す必要があるようでした。

 

また、このようにリンクを張り直しても、"Archives" スキームでビルドした場合に "-Lライブラリ名" が見つからないというようなエラーメッセージが表示されることがありました。

このときにも、指摘されたライブラリをいったんリンク解除して、再度リンクし直すことで、エラーが解消された感じです。

Library Search Paths を適切にする

また、"Derived Data" フォルダーを "Custom" に変更した上で "Default" に戻した場合でなのか、プロジェクト (TARGETS) の "Library Search Paths" に、古い "Derived Data" フォルダーのパスが指定されたまま、残ってしまう場合があるようでした。

そうなると、古い "Derived Data" フォルダー内に生成された、古い静的ライブラリをリンクしようとしてしまい、リンク時にエラーになってしまうことがある感じです。

これを解消するには、ワークスペース内の全てのプロジェクトそれぞれで、プロジェクト名を選択して、右に表示された TARGETS の中のアイテムを選択して、"Library Search Paths" 内に古い "Derived Data" フォルダーを指すパスがあれば、それを削除する必要があるようでした。

その他の留意事項として

そのほかにも、"Derived Data" を変更したばかりの時には Xcode4 内にそのフォルダーの存在が記憶されているのか、何らかのエラーが発生する原因になっているのではないかと思われる場面がありましたので、"Derived Data" フォルダーの場所を変更したら、Xcode4 をいったん再起動しておくのが良いかもしれません。

また、ビルドデータの出力先が変わる設定でもありますので、"Derived Data" フォルダーの場所を変更した後には、ワークスペース内のプロジェクトをクリーンビルドしてあげないと、静的ライブラリを上手くリンクできない状態になってしまうこともあるようです。