環境について
以下の環境で、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の導入が可能です。以下の記事に詳細を記載しました。
nprogram.hatenablog.com
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