ものすごい簡単です。
前提
pacman -S base-devel mingw-w64-i686-clang mingw-w64-x86_64-clang mingw-w64-i686-perl mingw-w64-x86_64-perl git
まあこのくらいはよく使うので入れておきましょう。
install
msys2_shell.cmd
があるところをコマンドプロンプトで開いて
コマンドプロンプト
call msys2_shell.cmd -mingw32
msys2_mingw32
mkdir patches
cd patches
git clone -v --progress --config core.autocrlf=false https://github.com/Alexpux/MINGW-packages.git ./
cd mingw-w64-lcov
makepkg -csi
同様にして
コマンドプロンプト
call msys2_shell.cmd -mingw64
msys2_mingw64
cd patches/mingw-w64-lcov
makepkg -csi
以上です。
注意:msys2 mingw clangではlink errorになる
coverageを取るときは、gccでもclangでも
clang++ test.cpp -o test.out -coverage -g -O0 -Wall -Wextra -std=c++14 -lWs2_32
のように-coverage
をつけてコンパイルするんですが、msys2 mingw clangでは
C:\msys64\tmp\test-9d9013.o:(.text+0xb5f2b): `llvm_gcda_emit_function' に対する定義されていない参照です
C:\msys64\tmp\test-9d9013.o:(.text+0xb5f3e): `llvm_gcda_emit_arcs' に対する定義されていない参照です
C:\msys64\tmp\test-9d9013.o:(.text+0xb5f43): `llvm_gcda_summary_info' に対する定義されていない参照です
C:\msys64\tmp\test-9d9013.o:(.text+0xb5f48): `llvm_gcda_end_file' に対する定義されていない参照です
C:\msys64\tmp\test-9d9013.o:(.text+0xf8923): `llvm_gcov_init' に対する定義されていない参照です
こんな感じのlink errorがどっさり出てきます。libprofile_rt.a
がないせいだと思います。ので、gccを使いましょう。pacmanからじゃなくて自力でllvmをビルドしてパッケージングすればワンちゃん(めんd)
参考
- http://txt.arboreus.com/2015/05/29/howto-get-lcov-test-coverage-on-windows.html
- https://github.com/MaverickTse/lsw-build2/blob/master/get_patch.sh
- https://wiki.archlinuxjp.org/index.php/Makepkg#.E4.BD.BF.E7.94.A8.E6.96.B9.E6.B3.95
- http://clang-developers.42468.n3.nabble.com/Code-coverage-on-clang-td4033066.html