13

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 もインストールしています。

4

3 に答える 3

15

私はこれを解決しました。

次のリンカー フラグがありませんでした

-Wall -fprofile-arcs -ftest-coverage

于 2013-10-11T13:05:53.120 に答える