6

Xcode の暗黙的な依存関係チェックと静的ライブラリで問題が発生しました。これは Xcode のバグであると考えられます (そのように報告されています)。他の誰かがそれについて何かアイデアを持っている場合に備えて、ここで取り上げます。簡単に言うと、アプリケーションが静的ライブラリに依存していて、ライブラリのコンポーネントであるソース ファイルが変更された場合、Xcode はライブラリを再構築しますが、アプリケーションを再リンクしないため、変更はアプリケーションに表示されません。

より具体的には、アプリケーションプロジェクトと静的ライブラリプロジェクトを含むワークスペースがあり、アプリケーションがライブラリ内の関数を呼び出します (結果はアプリケーションで表示されます: たとえば、関数はラベルに表示されるテキストを返しますアプリケーション)。静的ライブラリは、アプリケーション ターゲットの "Link Binary with Libraries" ビルド フェーズに含まれています。最初からビルドすると、ライブラリが最初にビルドされ、次にアプリケーションが期待どおりにビルドされます (つまり、Xcode が依存関係を検出しました)。

ここで、ライブラリ ソース ファイルのメッセージ テキストを変更してから [ビルドして実行] ボタンをクリックすると、Xcode はライブラリを正しく再ビルドしますが、アプリケーションの再リンクに失敗するため、アプリケーションを実行すると、変更されていないメッセージ テキストは次のようになります。表示されます。

Mac OS X 10.8.2 で Xcode 4.5.1 を実行しています。私が報告したシナリオでは、アプリケーションは iOS シングルビュー アプリケーションであり、呼び出されるスタティック ライブラリ関数はたまたま C++ で実装されています。

現在、クリーニングと再構築以外の回避策はありません。他の誰かがこれを見たことがありますか、それとも他の洞察がありますか? 前もって感謝します。

4

1 に答える 1

8

私は最初に SO を検索しましたが、成功しませんでしたが、検索を適切に表現していなかったに違いありません。しかし、質問を書いているうちに、「類似の質問」リストの方がはるかに良い結果が得られ、回避策を見つけることができました。簡単に言えば:

  • Project Navigator でライブラリを選択します。
  • File Inspector で場所を見つけます。おそらく「Relative to Group」です
  • 「ビルド製品に相対的」に変更します

これにより、テスト ケースの問題が修正されました。ライブラリのソース コードが変更されるたびに、アプリケーションが正しく再構築されるようになりました。提案されているように、project.pbxproj ファイルを手動で編集する必要はありませんでした。

これは Xcode のバグであると主張しますが、少なくとも今は回避策があります。

于 2012-10-19T16:42:52.093 に答える