kam*_*yFC 11 macos linker code-coverage clang
我可以使用GCOV的GCC功能和LCOV工具在Linux上成功获取C++代码库的代码覆盖率信息.
但我在Mac OSX遇到麻烦.
由于Apple不再使用经典的GCC编译器,我们担心LLVM-GCC编译器有一天会消失(LLVM-GCC甚至不能作为XCode 5.0中的选项) - 我们决定使用CLang编译我们的码.
使用CLang编译器iam传入这些标志 - > -g -fprofile-arcs -ftest-coverage来生成代码覆盖率信息.
我可以看到.gcno文件与目标文件一起生成.
当涉及链接时 - 不支持与GCC一起使用的"-lgcov"链接器标志.
现在,"profile_rt"库支持Clang/LLVM上的代码覆盖率.不幸的是,找到这个库有点棘手,因为Apple出于某种原因决定不将它包含在默认的库路径中.相反,您必须手动导航到/ usr/lib /以链接它:
并指定am链接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
Run Code Online (Sandbox Code Playgroud)
我还尝试链接动态库 - 在/ 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
Run Code Online (Sandbox Code Playgroud)
我还安装了XCode 5.0和Developer Tools
任何回复将不胜感激.
谢谢!!
kam*_*yFC 14
我解决了这个问题
我错过了以下Linker Flags
-Wall -fprofile-arcs -ftest-coverage
其他链接器标志-fprofile-arcs为我解决了这个问题。
Build Settings > Other Linker Flags > -fprofile-arcs
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5131 次 |
| 最近记录: |