WindowsでGoogleTestする備忘録

## **■C言語コンパイラの準備**
C言語をコンパイルするために必要なツールをインストールする。
[[参考リンク*1]](https://mtkbirdman.com/windows-visual-studio-code-c-fortran-mingw)
+ VSCodeインストール
+ C/C++の拡張インストール
+ Mingwインストール

Mingwインストールは、MSYS2で[lcovの準備](#lcovの準備)➄を実施でもOK

## **■CMakeの準備**
+ CMakeインストール
makefileを作成するためのツール、CMakeをインストールする。
VSCodeの拡張「CMake」と「CMake Tools」をアドインする。
[[参考リンク*2]](https://mtkbirdman.com/windows-visual-studio-code-cmake-install)

+ CMakeの CMakeLists.txt 作成方法
例　main.cをbuildして 実行ファイルtest_sampleを生成する。
[[参考リンク*3]](https://qiita.com/shohirose/items/45fb49c6b429e8b204ac)
[[参考リンク*4]](https://qiita.com/tapitapi/items/799886b076b38bc7446e)

```CMake:CMakeLists.txt
# CMakeのバージョンを設定
cmake_minimum_required(VERSION 3.23)

# プロジェクト名と使用する言語を設定
project(cmake_sample C)

#GDBのオプション
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -O0")

#build
add_executable(test_sample main.c)

# gcov実施
target_compile_options(test_sample PUBLIC -coverage)
target_link_options(test_sample PUBLIC -coverage)
```

+ CMakeの実行
下記コマンドでbuildできる。MinGWでbuildする指定をすることがポイント。
```
cmake -G "MinGW Makefiles" -B build . #./buildフォルダにmakefile作成
cmake --build build 　　　　　　　　　　#./buildフォルダでbuildを実行
```

+ VSCodeでCMakeの実行
プロジェクト内にCMakeLists.txtがあればCMakeを起動できる。下記順でBuild実行が可能。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1299802/031d9587-8dd6-f5e4-13c0-02a166d37f01.png)

## **■lcovの準備**
lcovをインストールするためにはMSYS2経由でパッケージインストールが必要。

+ MSYS2のインストール
MSYS2をインストール。https://www.msys2.org/
migw64をインストール済なので、インストールフォルダはmingw64の親フォルダを指定する。

+ lcovをインストール
下記の順でインストールする。先にインストールしているmingwと整合が取れない場合は、⑤で再度mingwをインストールする。
①パッケージをインストール。https://github.com/msys2/MINGW-packages/
②msys2の homeに解凍した一式を置く
③MSYS2(migw64の)を起動してcdで「mingw-w64-lcov」まで移動
④makepkg -csi
⑤エラーが出る場合は
　\mingw64配下をすべて削除して、下記手順でmingw64をインストールしなおして再度④を実施
[[参考リンク*5]](https://superactionshootinggame4.hatenablog.com/entry/2019/12/16/155649)
```:MSYS2 MINGW64 コマンド
　pacman -Syuu
　pacman -S base-devel
　pacman -S mingw-w64-x86_64-toolchain
　pacman -S mingw-w64-x86_64-autotools
 ```

+ lcovを実行
MSYS2 MINGW64を起動し、CMakeでBuildした結果から出力されるgcovファイル(.gcov,.gcda等)と同階層まで移動し下記を実行するとindex.htmlファイルが生成される。gcdaファイルは、Build後exeを実行しないとしないと生成されない点注意。
```:MSYS2 MINGW64 コマンド
lcov -c -d . -o cmake_sample.info
genhtml cmake_sample.info
```



## **■GoogleTestの準備**
下記手順でGoogleTestを準備する。
①GoogleTestをGithubからダウンロードし解凍 https://github.com/google/googletest
②Vscode起動してCmakeでbuild
③生成されたライブラリをGoogleTest/googleMockとして使用する。ヘッダ含め　\mingw64配下に配置する。(プロジェクト内にgoogletestを組み込んで、都度Build、ライブラリ生成する場合は③不要。)
④VSCodeの拡張「GoogleTest Adapter」をアドインする。
[[参考リンク*6]](https://developer.mamezou-tech.com/blogs/2022/11/04/google-test-01/)
[[サンプル]](https://github.com/Titan365/cmake_sample_001)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1299802/78e4983d-91f3-06af-f44d-ecf756be82a4.png)



## **■参考リンク**
[参考リンク*1]：https://mtkbirdman.com/windows-visual-studio-code-c-fortran-mingw
[参考リンク*2]：https://mtkbirdman.com/windows-visual-studio-code-cmake-install
[参考リンク*3]：https://qiita.com/shohirose/items/45fb49c6b429e8b204ac
[参考リンク*4]：https://qiita.com/tapitapi/items/799886b076b38bc7446e
[参考リンク*5]：https://superactionshootinggame4.hatenablog.com/entry/2019/12/16/155649
[参考リンク*6]：https://developer.mamezou-tech.com/blogs/2022/11/04/google-test-01/
[サンプル1]：https://github.com/Titan365/cmake_sample_001
[サンプル2]：https://github.com/Titan365/cmake_googletest_sample_001