Можно ли использовать флаги clang-cl -fprofile-instr-generate -fcoverage-mapping в Windows? - PullRequest
0 голосов
/ 01 декабря 2018

Я использую Clang 7 в Windows и Linux для создания покрытия на проекте C ++.В Linux я могу успешно генерировать всю информацию о покрытии, просто добавив флаги компиляции:

-fprofile-instr-generate -fcoverage-mapping

Но в Windows это возвращает мне ошибки компоновщика, а также llvm-cov не существует в установочном каталоге llvm ...

Итак, я предполагаю, что 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 Build Tools для компиляции с Clang в Windows.

PS2: из того, что я прочитал, нам нужно передать "-fprofile-instr-generate""компоновщику тоже ... но не знаю как это сделать ...

Спасибо

1 Ответ

0 голосов
/ 14 февраля 2019

в Windows вы должны использовать clang-cl.exe с параметром --coverage.Эта ссылка поможет вам сделать это ... https://marco -c.github.io / 2018/01/09 / code-cover-with-clang-on-windows.html

...