gtest和gmock是什么和功能以及用法可参考以下两篇文章,都相当给力!
gtest
《玩转Google开源C++单元测试框架Google Test系列(gtest)(总)》
http://www.cnblogs.com/coderzh/archive/2009/04/06/1426755.html
gmock
《Google Mock 入门概述》
http://www.cnblogs.com/welkinwalker/archive/2011/11/29/2267225.html
这篇文章主要想讲的就是如何在Linux下编译gtest&gmock的代码,并且在cmake工程中配置它。
编译gtest&gmock
首先,下载代码,地址如下:
https://github.com/google/googletest
第二步,下载完成后用unzip命令解压代码;
第三步,解压完成后,进入目录,利用g++来编译代码,命令如下:
gtest
g++ -isystem ${GTEST_DIR}/include -I${GTEST_DIR} \
-pthread -c ${GTEST_DIR}/src/gtest-all.cc
ar -rv libgtest.a gtest-all.o
Note that (We need `-pthread` as Google Test uses threads.)
gmock
g++ -isystem ${GTEST_DIR}/include -I${GTEST_DIR} \
-isystem ${GMOCK_DIR}/include -I${GMOCK_DIR} \
-pthread -c ${GTEST_DIR}/src/gtest-all.cc
g++ -isystem ${GTEST_DIR}/include -I${GTEST_DIR} \
-isystem ${GMOCK_DIR}/include -I${GMOCK_DIR} \
-pthread -c ${GMOCK_DIR}/src/gmock-all.cc
ar -rv libgmock.a gtest-all.o gmock-all.o
其中,GTEST_DIR、GMOCK_DIR就是代码的位置。
配置Cmake工程
第一步,在工程目录下创建lib文件夹和include文件夹;
第二步,把GTEST_DIR和GMOCK_DIR目录下的include文件夹复制到工程的include中,以及把之前编译的libgmock.a和libgtest.a复制到lib下;
第三步,在CMakeLists.txt中添加相应代码,例如:
cmake_minimum_required(VERSION 3.2)
project(gtest_test)
LINK_DIRECTORIES( ${PROJECT_SOURCE_DIR}/lib )
INCLUDE_DIRECTORIES( ${PROJECT_SOURCE_DIR}/include )
add_executable(gtest_test Foomain.cpp)
TARGET_LINK_LIBRARIES(gtest_test gmock gtest pthread)
install(TARGETS gtest_test RUNTIME DESTINATION bin)
这样就成功配置好了一个CMake工程!
公司的项目采用gtest来进行单元测试(其实之前华为海思也是用gtest,但大厂的好处(或者也可以说坏处- dog head)就是不需要关心这些事情),需要安装gtest;
我是在docker下安装的,步骤应该是一样的;
通过git来下载,源码安装:
git clone https://github.com/google/googletest
下载后会在下载命令的目录下生成一个 googletest 的文件夹,进入后,通过cmake来编译,先后输入下面的3个命令并执行:
1. 前言
近期组里项目代码出于后期测试和长期维护的考虑,需要集成测试框架和用例补全,现有开源测试框架里面,google的test框架对于C++项目的支持度较高,且官方文档的完善性也高,便于上手,所以选用gtest这一套。
2. gtest环境搭建
下载地址:
https://github.com/google/googletest/
环境搭建:
Git下来的源码里面包含了googletest和googlemock的文件夹,如果是做简单的gtest学习可以直接cmake编译就可以直接使用。如果需要加入到自己
最近在做一些C++相关事情,用的是C++编译成so库,最后引入到android播放器当中的,为了对C++代码进行快速迭代以及做性能测试,准备引入GTEST一个google出品的C++测试库,以及google/benchmark库用来做性能测试
找到一种方便的安装方式,不会引入额外的文件
总共需要3个cmakelist文件
CMakeLists.gtest
CMakeLists.benchmark
CMakeLists.txt: 主项目的CMakeLists.txt文件
# CMakeLists.g
尝试定位 (GMock) 库和包含文件的 finder 模块。
(此文件几乎是原始 FindGTest.cmake 文件的副本,您可以按原样使用它或根据自己的需要对其进行修改。)
接受以下变量作为输入:
GMOCK_ROOT -(作为 CMake 或环境变量)gmock 安装前缀的根目录
GMOCK_MSVC_SEARCH - 如果使用 MSVC 编译,则可以将此变量设置为“MD”或“MT”以启用搜索 gmock 构建树(默认值:“MD”)
定义的变量
定义以下变量:
GMOCK_FOUND - 找到了 Google 测试框架
GMOCK_INCLUDE_DIRS - 包括目录
还将下面的库变量定义为普通变量。 当找到调试库时,这些包含调试/优化关键字。
GMOCK_BOTH_LIBRARIES - libgmock 和 libgmo
### 使用 CMake 3.30 编译 gTest 动态库
为了使用 CMake 3.30 版本编译 Google Test (gtest) 动态库,需要遵循一系列配置和构建过程。以下是详细的指南:
#### 准备工作环境
确保已经安装了所需的依赖项以及适当版本的 CMake。
对于 Linux 系统(以 Ubuntu 为例),更新软件包列表并安装必要的开发工具[^4]:
```bash
sudo apt update && sudo apt install build-essential cmake
确认当前使用的 CMake 版本满足需求。如果未达到所需版本,则需下载特定版本的 CMake 并按照官方文档进行安装[^3]。
#### 获取 gtest 源码
可以从 GitHub 上获取最新版本的 gtest 或者指定分支/标签下的源代码。这里假设克隆整个仓库到本地目录 `~/projects/gtest` 中:
```bash
git clone https://github.com/google/googletest.git ~/projects/gtest
cd ~/projects/gtest
#### 创建独立于源文件的构建目录
创建一个新的子目录用于存放生成的目标文件和其他中间产物,这有助于保持项目结构清晰整洁。
```bash
mkdir -p ~/projects/gtest/build && cd $_
#### 配置 CMake 构建选项
通过设置 `-DBUILD_SHARED_LIBS=ON` 参数告知 CMake 将要构建共享库而非静态库;同时指明期望输出的位置以及其他可能影响行为的关键参数。
```bash
cmake .. \
-DCMAKE_BUILD_TYPE=Release \
-DBUILD_GMOCK=OFF \ # 只编译 gtest 而不是完整的 googletest 套件
-DBUILD_SHARED_LIBS=ON # 启用动态链接库支持
此时会读取顶层 CMakeLists.txt 文件中的指令,并基于给定条件解析出具体的编译规则。注意这里的路径应当指向实际存放 gtest 源代码的地方。
#### 执行编译操作
一旦完成了上述准备工作之后就可以调用 make 工具启动真正的编译流程了。考虑到多核处理器的优势建议加上 `-jN` 参数加速处理速度(N 表示 CPU 核心数加一通常是个不错的选择)[^1]:
```bash
make -j$(nproc)
#### 安装编译好的库
最后一步就是把新产生的 .so 文件复制至系统的标准位置以便后续程序能够顺利找到它们。当然也可以选择不执行此步而是在运行时显式提供完整路径。
```bash
sudo make install
以上就是在 CMake 3.30 下面针对 gtest 实施的一套典型做法。需要注意的是具体细节可能会因为操作系统差异等因素有所变化,请参照官方手册调整相应部分。