2016-04-26 7 views
0

私は他のフレームワークにも依存するフレームワークに取り組んでいます。私は私のプロジェクトにSystemConfigurationをリンクする場合でも、この警告が表示され、Xcode:フレームワークがプロジェクトにリンクされているかどうかのテスト

#ifndef _SYSTEMCONFIGURATION_H 
#warning "The SystemConfiguration framework not found in project or not included in precompiled header, please make sure that it does" 
#endif 

問題がある:私のユーザーの統合プロセスを支援するために、私は特定のフレームワークがリンクされていない場合は、それらを警告するでしょうマクロを追加しました。

私は間違っていますか?ありがとう!

答えて

0

ユーザーは、フレームワークのヘッダーを含める前に、自分のアプリのどこかで#import <SystemConfiguration/SystemConfiguration.h>する必要があります。 _SYSTEMCONFIGURATION_Hは、SystemConfiguration.framework内部で宣言されている単なるプリプロセッサディレクティブなので、バイナリだけでは十分ではありません。

+0

ありがとうございます。私は傘のヘッダをインポートし、テストアプリケーションからSystemConfigurationのリンクを解除すると、これまでどおり何のエラーも起こりません。 – Yotam

+0

@ Yotam、あなたのフレームワークはSystemConfigurationでリレーしますか? SystemConfigurationとのリンクができればいいですね。 リンクはコンパイル後に実行されるため、コンパイラはジョブの実行後にどのフレームワークがリンクされるかの手掛かりがないため、コンパイル段階でこれをチェックする方法はありません。 このようなもので、実行時にそれを確認するためのオプションもあります。 '' 'BOOL isFrameworkLoaded =(! "MyClassNameFromTheFramework" @ NSClassFromString()= nilの);' '' –

+0

andery.s @私は思いますできる場合はXcodeのようにリンク時エラーを発生させます。いくつかのフレームワークで提案したように 'NSClassFromString'を使用しましたが、SystemConfigurationなどのフレームワークでは、すべてのヘッダファイルを検索した後でも、定義されたクラスは見つかりませんでした。これは主にCの構造と変数です。 – Yotam

関連する問題