GCOV の GCC 機能と LCOV ツールを使用して、Linux 上の C++ コード ベースのコード カバレッジ情報を正常に取得できました。
しかし、Mac OS X で問題が発生しています。
Apple にはもはや古典的な GCC コンパイラがなく、LLVM-GCC コンパイラもいつか消えるのではないかと心配しているため (LLVM-GCC は Xcode 5.0 のオプションとしてさえ利用できません)、Clang を使用してコンパイルすることにしました。コード。
Clang コンパイラを使用している間、これらのフラグ --> -g -fprofile-arcs -ftest-coverage を渡して、コード カバレッジ情報を生成しています。
オブジェクト ファイルと一緒に .gcno ファイルが生成されているのがわかります。
リンクに関しては、GCC で動作する "-lgcov" リンカー フラグはサポートされていません。
Clang / LLVM のコード カバレッジが「profile_rt」ライブラリでサポートされるようになりました。残念ながら、Apple は何らかの理由でこのライブラリをデフォルトのライブラリ パスに含めないことを決定したため、このライブラリを見つけるのは少し難しいです。代わりに、手動で /usr/lib/ に移動してリンクする必要があります。
そして、指定されているように、libprofile_rt.a ライブラリに対してリンクしています。
しかし、リンカーの問題があります。
しかし、これらのリンカーエラーが発生し続けます
Undefined symbols for architecture x86_64:
"_llvm_gcov_init", referenced from:
___llvm_gcov_init in Iso9660Reader.o
___llvm_gcov_init in AutoExtractCreator.o
___llvm_gcov_init in TempFilePath.o
___llvm_gcov_init in TempPath.o
___llvm_gcov_init in ReadDirectory.o
___llvm_gcov_init in OpenDirectory.o
___llvm_gcov_init in SpltPath.o
...
ld: symbol(s) not found for architecture x86_64
/usr/lib フォルダにある libprofile_rt.dylib という動的ライブラリにもリンクしようとしましたが、それでも同じ問題が発生します。
これは、Mountain Lion で動作する Clang バージョンです。
clang --version
Apple LLVM version 5.0 (clang-500.2.75) (based on LLVM 3.3svn)
Target: x86_64-apple-darwin12.5.0
Thread model: posix
Xcode 5.0 と Developer Tools もインストールしています。