我正在Windows和Linux中使用clang 7生成有关c ++项目的报道。 在linux中,我只需添加编译标志就可以成功生成所有覆盖率信息:
-fprofile-instr-generate -fcoverage-mapping
但是在Windows中,它会返回链接器错误,并且llvm安装目录中不存在llvm-cov ...
所以我猜测clang不支持Windows中的代码覆盖?这样对吗?
(如果不能的话,你能告诉我在联系阶段我缺少什么吗?)
PS:链接器错误来自:
lld-link.exe: error: duplicate symbol: __profn_??_GTestFactoryBase@internal@testing@@UEAAPEAXI@Z
收件人:
lld-link.exe: error: undefined symbol: __llvm_profile_runtime
>>> referenced by src\app\CMakeFiles\app.dir\main.cpp.obj:(__llvm_profile_runtime_user)
lld-link.exe: error: undefined symbol: __llvm_profile_register_function
>>> referenced by src\app\CMakeFiles\app.dir\main.cpp.obj:(__llvm_profile_register_functions)
>>> referenced by src\app\CMakeFiles\app.dir\main.cpp.obj:(__llvm_profile_register_functions)
PS:我正在使用Visual Studio构建工具在Windows中使用clang进行编译。
PS2:从我读到的内容来看,我们还需要将“ -fprofile-instr-generate”传递给链接器...但是不知道该怎么做...
谢谢
答案 0 :(得分:0)
在Windows上,应将clang-cl.exe与--coverage选项一起使用。 此链接将帮助您做到这一点... https://marco-c.github.io/2018/01/09/code-coverage-with-clang-on-windows.html