可以在Windows中使用clang-cl标志-fprofile-instr-generate -fcoverage-mapping

时间:2018-12-01 12:13:23

标签: c++ windows clang llvm-clang visual-studio-2017-build-tools

我正在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”传递给链接器...但是不知道该怎么做...

谢谢

1 个答案:

答案 0 :(得分:0)

在Windows上,应将clang-cl.exe与--coverage选项一起使用。 此链接将帮助您做到这一点... https://marco-c.github.io/2018/01/09/code-coverage-with-clang-on-windows.html