本例以 gtest-1.7.0 为例进行讲解。
一、要求:
1. 安装 cmake
二、编译

1. 下载 gtest 源码包,并解压,如:/home/hdc/gtest-1.7.0;

2.  编译 gtest 动态库,进入 gtest-1.7.0 目录,编辑 CMakeLists.txt,修改如下几行:
 10 option(BUILD_SHARED_LIBS "Build shared libraries (DLLs)." OFF)
     19 option(gtest_build_tests "Build all of gtest's own tests." OFF)
     21 option(gtest_build_samples "Build gtest's sample programs." OFF)
将 OFF 修改为 ON,保存并退出。
3.  创建 build 目录,并进入该目录;
4. cmake ..
5. make
6. ls *.so
     libgtest_dll.so                libgtest_main_no_rtti.so  libgtest_main_use_own_tuple.so  libgtest.so
     libgtest_main_no_exception.so  libgtest_main.so          libgtest_no_exception.so
7. sudo cp *.so /usr/lib/gtest
8. cd ../include
9. sudo cp -pr gtest /usr/include
10. sudo chown root:root /usr/include/gtest -R
11. sudo chmod u+w /usr/include/gtest -R
12. sudo mkdir /usr/lib/gtest && cd /usr/lib/gtest
13. sudo ln -s libgtest.so libgtest.so.6
14. sudo ln -s libgtest.so libgtest.so.6.0
15. sudo ln -s libgtest_main.so libgtest_main.so.6
16. sudo ln -s libgtest_main.so libgtest_main.so.6.0
三、使用

1. vim func.h
[cpp] view plaincopy
  1. #ifndef FUNC_C
  2. #define FUNC_C
  3. #ifdef __cplusplus
  4. extern "C"
  5. {
  6. #endif
  7. int fac(int nInput);
  8. #ifdef __cplusplus
  9. }
  10. #endif
  11. #endif // FUNC_C
2. vim func.c
[cpp] view plaincopy
  1. #include "func.h"
  2. int fac(int nInput)
  3. {
  4. if(nInput < 0) {
  5. return -1;
  6. }
  7. int nRev = 1;
  8. for(int i = 1; i <= nInput; ++i){
  9. nRev *= i;
  10. }
  11. return nRev;
  12. }
3. vim fac_test.cpp
[cpp] view plaincopy
  1. #include <limits>
  2. #include "func.h"
  3. #include "gtest/gtest.h"
  4. TEST(Fac_test, input_negative){
  5. EXPECT_EQ(-1, fac(-1));
  6. EXPECT_EQ(-1, fac(-2));
  7. EXPECT_EQ(-1, fac(-5));
  8. }
  9. TEST(Fac_test, input_zero){
  10. EXPECT_EQ(1, fac(0));
  11. }
  12. TEST(Fac_test, input_positive){
  13. EXPECT_EQ(1, fac(1));
  14. EXPECT_EQ(2, fac(2));
  15. EXPECT_EQ(6, fac(3));
  16. }
4. vim Makefile
[plain] view plaincopy
  1. CC = gcc
  2. CPP = g++
  3. LINK = g++
  4. CFLAGS = -g -Wall -Werror -Wextra -std=gnu99
  5. CPPFLAGS = -g -Wall -Werror -Wextra
  6. LIBS = -L/usr/lib/gtest -lgtest -lgtest_main
  7. C__SOURCES = $(wildcard *.c)
  8. CPPSOURCES = $(wildcard *.cpp)
  9. OBJECTS = $(patsubst %.c, %.o, $(C__SOURCES)) $(patsubst %.cpp, %.o, $(CPPSOURCES))
  10. TARGET = sample_unittest
  11. first: all
  12. %.o: %.c
  13. $(CC) -c $(CFLAGS) -o $@ $<
  14. %.o: %.cpp
  15. $(CPP) -c $(CPPFLAGS) -o $@ $<
  16. all: $(TARGET)
  17. $(TARGET): $(OBJECTS)
  18. $(LINK) $(CPPFLAGS) $(LIBS) -o $(TARGET) $(OBJECTS)
  19. .PHONY: clean
  20. clean:
  21. rm -f $(TARGET) $(OBJECTS)
5. make
6. export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/gtest
7. ./sample_unittest

gtest 编译、安装和使用相关推荐

  1. TVM:源码编译安装

    TVM:Linux源码编译安装 笔者环境: OS:Ubuntu 18.04 CMake:3.10.2 gcc:7.5.0 cuda:11.1 编译安装过程总览 本文将简介 tvm 的编译安装过程,包含 ...

  2. ros加载编译opencv-3.4.9,编译安装opencv-3.4.9

                                                            ros加载编译opencv-3.4.9 ros中配置opencv 1.加载自己的open ...

  3. Fast DDS入门二、Fast DDS在Windows平台的编译安装

    Fast DDS入门五.在Windows平台创建一个简单的Fast DDS示例程序 1 Fast DDS动态库的编译安装 本节提供了在Windows环境中从源代码安装Fast DDS的说明.将安装以下 ...

  4. 配置Fairseq的wav2ec采坑日志3:编译安装flashlgiht

    编译安装 flashlight 最终结论 vcpkg版本的安装不适合国内,因为不可访问.所以使用源代码编译版本. !!!注意!!! 不好意思各位:按照如下教程只能保证编译通过,但是最终测试遇到库依赖的 ...

  5. Windows 10下编译安装Hadoop2.6

    转自:https://www.linuxidc.com/Linux/2016-08/134131.htm Windows 10下安装Hadoop2.6,Windows10下编译64位Hadoop2.x ...

  6. 7 centos 源码安装samba_在CentOS7.6里编译安装PHP7.4(最新版),很详细

    拿到一个空的服务器,首先我们就要来用起来啦! 首先要先下载并编译安装PHP最新版本,请到php官网下载: 这里我首先在系统里在新建存储源码包的文件夹,比如我存放在这里 下载安装PHP7.4之前,你要先 ...

  7. mysql8.0.12最小化安装_简述MySql8.0编译安装过程

    [[email protected] ~]# cat /etc/redhat-release CentOS Linux release 8.0.1905 (Core) 注意:不要用8以下的系统编译My ...

  8. debian编译安装python_编译安装python2.7及相关模块(debian5.0.1)

    基础环境说明及安装 当前系统 cat /etc/debian_version 5.0.1 因自带的python版本太旧 开发需要使用python2.7的版本 并需要paramiko Crypto My ...

  9. php编译7教程,PHP7 快速编译安装

    PHP7正式版发布啦, 之前没有安装过的,都来安装试一试 . 即将发布的ThinkPHP5 在PHP7环境下也完全兼容, 佩服鸟哥把兼容性做得这么好 快速编译安装PHP7步骤: 第一步: 安装必要一些 ...

  10. linux mysql 5.6.22_LinuxCentOS6.0下编译安装MySQL5.6.22

    Linux CentOS6.5下编译安装MySQL 5.6.22[给力详细教程] 一.编译安装MySQL前的准备工作 安装编译源码所需的工具和库(安装过程注意有没出错) yum install gcc ...

最新文章

  1. spring27: bean装配-基于xml
  2. 关于学生信息录入(文件操作)的心得体会
  3. 微信月活跃用户数6.97亿 全球十大消息应用第四
  4. 微服务实践(五):微服务的事件驱动数据管理
  5. 微信jssdk 图片上传 JAVA_微信jssdk图片上传
  6. 菜鸟之路-浅谈设计模式之单例设计模式
  7. sklearn自学指南(part49)--字典学习
  8. python怎么查询元素是否在列表中_python怎么判断某一元素是否在列表中
  9. 如果你还不明白Hello,World!
  10. 1一10到时的英文单词_哈尔滨一山羊皮,叫雪地皮衣!刮风下雪不冻身,10年免洗不过时...
  11. python中元组和列表的区别_Python 序列:列表、元组
  12. 生产执行系统MES架构设计及应用架构
  13. 解决wps缺少字体的问题
  14. NUC8i7HNK下ubuntu16.04LTS安装realsense
  15. linux格式化卡死,在Linux中格式化SD卡失败
  16. 微信分享功能踩坑过程
  17. React 中 TypeScript 和装饰器及 Hooks
  18. STAF学习系列--安装及配置
  19. RISC_V(0) 指令集架构
  20. DTW学习(dynamic time warping)——思想、代码实现

热门文章

  1. python正则表达式面试_Python面试 Re-正则表达式
  2. turtle fillcolor_使Python中的turtle模块画图两只小羊
  3. C++中 Vector使用方法
  4. 使用eclipse调试ns3配置说明
  5. 工业交换机在工业通信领域的应用分析
  6. 【渝粤题库】陕西师范大学600001物理化学(上) 作业(专升本)
  7. 【渝粤题库】广东开放大学 人力资源管理(本科) 形成性考核
  8. php如何禁用浏览器的缓存,php如何禁止浏览器使用缓存页面
  9. 【MFC系列-第32天】控件自绘技术
  10. Java面向对象(12)--对象类型转换 (Casting )