Linux下CMake工程中gtest&gmock的安装与使用

本文介绍如何在Linux环境下使用CMake配置gtest和gmock单元测试框架。包括下载源码、编译步骤及CMakeLists.txt的编写指南。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Linux下CMake工程中gtest&gmock的安装与使用

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)
#下面这条语句中,链接了gmock、gtest以及pthread
#pthread是必要的,因为前两者会用到
TARGET_LINK_LIBRARIES(gtest_test gmock gtest pthread)
install(TARGETS gtest_test RUNTIME DESTINATION bin)

这样就成功配置好了一个CMake工程!

### 使用 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 实施的一套典型做法。需要注意的是具体细节可能会因为操作系统差异等因素有所变化,请参照官方手册调整相应部分。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值