環境について
以下の環境で、Google Testを使用してみます。
- Windows 10
- Visual Studio 2017 Community
- Cmake 3.10.2
- C++
なお、Visual Studio 2017 バージョン 15.5 以降では、Google Test が C++ ワークロードでのデスクトップ開発の既定のコンポーネントとして Visual Studio IDE に統合されており、より簡単にGoogle Testの導入が可能です。以下の記事に詳細を記載しました。
Google Testのライブラリファイル生成手順
まず、Google Testを、GitHubからダウンロードします。 Zipファイルでダウンロードしてください。 ダウンロード後は、アクセス制限がかからないフォルダまで移動してください。 この後、Cドライブ直下など、アクセス制限のあるフォルダで作業すると、Visual Studioでビルドするときに、エラーになってビルドできなくなる可能性があるためです。 github.com
次に、以下のホームページでCMakeをダウンロードします。(例 : cmake-3.10.2-win64-x64.msi
)
https://cmake.org/
環境変数の設定は、インストール時の設定で解決できそうです。
この後、Visual Studioを用いてビルドします。
Cmake 3.10.2
でビルドできるVisual Studioのバージョンは、以下のとおり。
本情報は、cmake公式ページのドキュメントのHELP(V3.10)のVisual Studio Generatorsの項目に記載があります。
https://cmake.org/documentation/
- Visual Studio 6
- Visual Studio 7
- Visual Studio 7 .NET 2003
- Visual Studio 8 2005
- Visual Studio 9 2008
- Visual Studio 10 2010
- Visual Studio 11 2012
- Visual Studio 12 2013
- Visual Studio 14 2015
- Visual Studio 15 2017
(1) コマンドプロンプトを開き、ダウンロードしたGoogle Testまで移動。 <your dir path>googletest-master\googletest
(2) googletest-master\googletest
のまでcdコマンドで移動
(3) mkdir build
で、ワーキングディレクトリ作成
(4) cd build
でワーキングディレクトリに移動
(5) cmake .. -DBUILD_GTEST=ON -DBUILD_GMOCK=OFF -G "Visual Studio 15 Win64"
でビルドする
<コマンドプロンプト出力結果>
<working dir path>googletest-master\googletest\build>cmake .. -DBUILD_GTEST=ON -DBUILD_GMOCK=OFF -G "Visual Studio 15 Win64" -- Selecting Windows SDK version 10.0.15063.0 to target Windows 10.0.16299. -- The CXX compiler identification is MSVC 19.11.25508.2 -- The C compiler identification is MSVC 19.11.25508.2 -- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.11.25503/bin/HostX86/x64/cl.exe -- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.11.25503/bin/HostX86/x64/cl.exe -- works -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Detecting CXX compile features -- Detecting CXX compile features - done -- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.11.25503/bin/HostX86/x64/cl.exe -- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.11.25503/bin/HostX86/x64/cl.exe -- works -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Detecting C compile features -- Detecting C compile features - done -- Found PythonInterp: C:/Program Files/Python36/python.exe (found version "3.6.2") -- Looking for pthread.h -- Looking for pthread.h - not found -- Found Threads: TRUE -- Configuring done -- Generating done CMake Warning: Manually-specified variables were not used by the project: BUILD_GMOCK BUILD_GTEST -- Build files have been written to: <working dir path>googletest-master/googletest/build
(6) ワーキングディレクトリにプロジェクトファイルgtest.sln
が作成されるので、開きます。
(7) プロジェクトのALL_BUILDをビルドします。ライブラリファイルは、build\Debug
とbuild\Release
に作成されます。pdbファイルを含めた中間ファイルは、build\gtest.dir
に作成されます。
* gtestd.lib
* gtest.pdb
* gtest_maind.lib
* gtest_main.pdb
Releaseフォルダ以下にも以下のように作成されます。
gtest.lib
gtest_main.lib
Visual StudioでGoogle Testのライブラリファイルを使用する
本方法は参考ページに非常に詳しく記載されています。
Sample │ Sample.sln └─Sample │ Sample.cpp │ Sample.vcxproj │ Sample.vcxproj.filters │ ReadMe.txt │ stdafx.cpp │ stdafx.h │ targetver.h │ ├─include // googletest-master\googletest\include をコピー │ └─lib // googletest-master\googletest\buildのDebugとReleaseフォルダをコピー(※1) ├─Debug └─Release (※1) pdbファイルが必要な場合は、```build\gtest.dir```から取得してください
(1) 構成を[すべての構成] に設定し、INCLUDEディレクトリの追加
ソリューション右クリック -> プロパティ -> 構成プロパティ -> C/C++ -> [追加のインクルードディレクトリ] -> gtestのincludeディレクトリを追加
※$(ProjectDir)を使用して追加した方がよい
例:$(ProjectDir)include
(2) 構成を[すべての構成] に設定し、libファイルのリンク設定
ソリューション右クリック -> プロパティ -> 構成プロパティ -> リンカー -> [追加のライブラリディレクトリ] -> gtestのlibのディレクトリを追加 $(Configuration)を利用して追加した方がよい
例:$(ProjectDir)lib\$(Configuration)
ソリューション右クリック -> プロパティ -> 構成プロパティ -> リンカー -> 入力 -> [追加の依存ファイル] ->
(2-1) 構成を[Release] に設定し、下記を追加 gtest.lib gtest_main.lib
(2-2) 構成を[Debug] に設定し、下記を追加 gtestd.lib gtest_maind.lib
(3) ランタイムライブラリのリンク方法の指定を変更
ソリューション右クリック -> プロパティ -> 構成プロパティ -> C/C++ -> コード生成 -> [ランタイムライブラリ] ->
(3-1) 構成を[Release] に設定し、[マルチスレッド (/MT)] を設定
(3-2) 構成を[Debug] に設定し、[マルチスレッド デバッグ (/MTd)] を設定
(4) 以下のようにコードを書いてSHIFT + F5で実行してください。なお、Google-TestはWin64のものをダウンロードしているので、
プラットフォームは、x64環境でないと正しく動作しません。Google Testが正しく動作することを確認しました。
[コード]
#include "stdafx.h" #include "gtest/gtest.h" TEST(Test1, test1_1) { int num1 = 1; int num2 = 1; ASSERT_EQ(num1, num2); // 成功する num2 = 2; ASSERT_EQ(num1, num2); // 失敗する }
[実行結果]
参考ページ
以下のページを参考にさせていただきました。ありがとうございます。 qiita.com
- Visual Studio で gtest を使う dr-yellow.hatenablog.com