iPhone プロジェクトで gcov を使用しようとしており、ここに記載されている Apple の指示に従いましたが、機能しません。
プロジェクトをビルドして構成すると、オブジェクト ファイルごとに .gcda ファイルが作成されます。ただし、実行された行は .gcda ファイルに記録されません。(CoverStory は、すべてのカバレッジが 0% であることを示しています)
次のように、テンプレートプロジェクトに単純なクラスを追加しました。
@interface SomeClass : NSObject
- (void)func1:(BOOL)flag;
@end
@implementation SomeClass
- (void)func1:(BOOL)flag {
if (flag) {
NSLog(@"flag is YES");
}
else {
NSLog(@"flag is NO");
}
}
@end
このクラスを割り当てて、application:didFinishLaunchingWithOptions で func1 を呼び出しました。
OSX 10.6.4、iPhone SDK 4.0、および Xcode 3.2.3 を使用しています。さらに構成が必要ですか? ガイドしてください。
更新 2010/7/15:
@tonclon から提供されたリンクでこれらのヒントを試しましたが、まだ機能しませんでした。次の説明では、私が試したものです。
GCC 4.0 でコンパイルされた Cocoa アプリケーション 「Cocoa」アプリケーションのプロジェクト設定で、
- GCC_INSTRUMENT_PROGRAM_FLOW_ARCS を YES に設定します
- GCC_GENERATE_TEST_COVERAGE_FILES を YES に設定します
- その他のリンカー フラグを -lgcov に設定します。
- C/C++ コンパイラのバージョンを 4.0 に設定します。
うまくいきました.gcdaファイルは、期待どおりのカバレッジ情報で生成されました. ただし、SDK 4.0 を使用した iPhone プロジェクトでは、gcc 4.0 は SDK 4.0 の一部の構文 (ブロックなど) をコンパイルできないため、同じ構成を使用できません。
google-tool-box でカスタム gcov ライブラリを使用する Other Linker Flag に -lgcov を設定する代わりに、 google-toolbox-for-mac に含まれるカスタム gcov ライブラリを試しましたが、生成された .gcda ファイルのカバレッジは 0% です。(同じ結果)
次に何をすべきか教えてください。任意の提案をいただければ幸いです。