Я мог бы успешно получить информацию о покрытии кода в нашей базе C++ кода для Linux, используя функции GCC GCOV и инструмент LCOV.
Но у меня проблемы в Mac OS X.
Поскольку у Apple больше нет классического компилятора GCC, и мы опасаемся, что компилятор LLVM -g CC тоже однажды исчезнет (LLVM -g CC даже не доступен в качестве опции в Xcode 5.0) - мы решили использовать Звоните, чтобы скомпилировать наш код.
При использовании компилятора Clang я передаю эти флаги → -g -fprofile-arcs -ftest-покрытие для генерации информации покрытия кода.
Я вижу, как создаются файлы .gcno вместе с объектными файлами.
Когда дело доходит до связывания - флаг компоновщика "-lgcov", который работает с GCC, не поддерживается.
Покрытие кода в 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
Я также пытался связываться с динамической библиотекой - libprofile_rt.dylib, находящейся в папке /usr/lib - Но я все еще получаю ту же проблему.
Это Clang Version, работающая на Mountain Lion.
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.