Windows上编译GTest并执行测试用例

0 背景

之前写代码一直有习惯于搭建LLT框架,作为测试防护网能够大大提升代码健壮性,有效避免修改引入,另一方面测试用例作为项目重要资产也应该有个地方可以归档,写入LLT用例里面还可以通过git上库。
当前项目中只有业务应用代码,还未有对应用例,为了后续开发以及测试方便,抽了点时间研究在windows下编译GTest并执行。

1 环境

本地项目编译/运行的相关环境如下所示:

编号 名称 版本
1 操作系统 Windows 11
2 编译环境 Qt 5.8
3 编程语言 C++14
4 编译器版本 VS2015 MSVC 19.0
5 GTest版本 V1.15.2

2 生成GTest动态库

2.1 下载最新GTest库

GTest源码可以到GitHub下载,取对应的Release版本即可。通过打开网页可以看到最新版本是1.15.2,我现在用的就是最新的。
在这里插入图片描述

如果本地配好Git环境直接可以用命令行操作方便快捷:

git clone https://github.com/google/googletest.git -b v1.15.2

如果遇到git clone链接超时可以参考这个博客进行配置,就两个命令,亲测有效。

2.2 编译GTest

2.2.1 cmake gtest

一般来说,编译常规操作如下:

mkdir build
cd build
cmake ..
make && make install

但是我在执行的过程中出现很多问题,例如在gtest默认生成是静态库而不是动态库,还有编出来的版本是x86而不是x64等等。正常来说普通方式就能够编译,由于不同环境之间差异,我本地编译一直失败,于是乎我才用gtest和gmock单独编译的方式

编译命令如下:

mkdir build
cd build
cmake -G "Visual Studio 14 2015 Win64" ..

这里我强制指定了用64位编译,是因为我Qt项目所有的编译选项都是64位的,包括其他依赖库,为了配套,我选择编译64位。
执行情况:
在这里插入图片描述
到这里就能执行成功。同样的操作对gmock进行编译。然后就能获得对应.sln文件。(这一步编译成功后,我尝试在上一层目录,即gtest、gmock同级目录下的build执行命令,也是可以成功的,但此时我的lib库已经编译成功且生效了,只能说还是走了一些弯路)

2.2.1.1 遇到问题:target参数不对

问题情况截图报错如下:
在这里插入图片描述
根据报错提示定位Cmakelist里面执行代码,发现有个参数一开始没有赋值:GOOGLETEST_VERSION,于是我在执行开端前面加上对它的赋值且进行版本打印:

set(GOOGLETEST_VERSION "v1.15.2")
message(STATUS "GOOGLETEST_VERSION: ${GOOGLETEST_VERSION}")

重新执行cmake,问题解决。

2.2.1.2 遇到问题:xxx thread 编译
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值