准备工作

为了在你的测试中使用GoogleTest, 你必须让你的编译系统 知道到哪里去寻找GoogleTest 的头文件和源文件。

具体的方法只能依赖于你具体使用的哪种编译系统了,一般来讲这个非常容易直接的。

编译

如果你的GoogleTest 放在${GTEST_DIR} 目录下面。(使用 Visual Studio 和 Xcode)编译它产生一个库。

${GTEST_DIR}/src/gtest-all.cc

下面是对通用的编译方法解释,直接略过,参看https://github.com/google/googletest/blob/master/googletest/README.md

重点翻译

CMake方法

下载下来的Google Test 里面包含 CMake 编译脚本,只要是支持C标准的平台都可以使用。

如果没有安装CMake的话,戳下面链接下载并安装: http://www.cmake.org/.

CMake 会根据你代码所在的平台的编译器等环境 生成native的makefile 文件,当然如果你的平台安装多个编译器,你也可以在Cmake 脚本里面指定。

你既可以把Google Test 编译成一个 独立的平台(Standalone CMake Project),也可以和你要测的代码合并成一个平台。[原文:it can be incorporated into an existing CMake build for another project.]

独立的CMake Project

如果想把Google Test编译成一个独立的Project,典型的workflow如下:

mkdir mybuild       # Create a directory to hold the build output.
cd mybuild
cmake ${GTEST_DIR} # Generate native build scripts.

如果想编译Google Test 的Samples,你应该把上面的最后一句话换成如下:

cmake -Dgtest_build_samples=ON ${GTEST_DIR}

如果你使用的是 *nix (各种linux系统),你应当会在当前目录下面看到一个Makefile文件生成,Just do it, 没错输入 make.

如果你是用的是微软的Visual Studio 并且在windows 上面,gtest.sln 和几个.vcproj 文件生成。然后用visual studio 编译它。

如果你是有钱人,用的是乔布斯的 MAC OS X 上面的 Xcode,建议你把它砸了,不.... .xcodeproj 文件生成了。

Incorporating Into An Existing CMake Project

和已有CMake Project 合并

如果你想在一个已有的CMake Project中使用 gtest(以下都叫gtest了,打字太累了),那么就给你介绍一个更强大和灵活的方法啦。

首先呢,你得在你的CMakefile 文件里面加点东西咯。当然是 add_subdirectory().   这样 cmake 在读到这句话的时候,就会说"卧槽"还有gtest 那么大一坨没有编译呢,继续工作吧。这种方法在windows 上面非常有用。想让 main build 用上 gtest这个灵丹妙药,有以下几种不同的方法:

1. 手动从github上面下载下来,把他放到某个已知的位置,但这种方法太不灵活了,你想持续集成你的系统,就GG了

2. 把gtest目录嵌入到 main project's source tree里面。这通常是一个简单有效的方法,但是如果 gtest也更新了呢?你又想用gtest里面最新的功能。有些组织也不推荐用这种方法。

3. 加一个git 子模块到gtest里。这通常也是不合适的。

4.  使用 CMake 下载 gtest 作为 编译的准备步骤。这有点复杂但是没有其他方法太多的限制。

方法就不介绍了,反正已经实现了看原文:https://github.com/google/googletest/blob/master/googletest/README.md

推荐另一个代码:https://github.com/bast/gtest-demo, 对于理解 cmake 比较有帮助

Multi-threaded Tests

Avoiding Macro Name Clashes

GoogleTest 之路1-Generic Build Instructions编译指导总方案的更多相关文章

  1. build.xml编译报错Specified VM install not found: type Standard VM, name jdk1.7.0_45

    build.xml编译打包时报错: 解决方法: build.xml  ——  右键 ——  Run As —— External Tools Configuration 在这个页面的顶端就会看到有红叉 ...

  2. Atitti.java android反编译解决方案-----虚拟机方案

    Atitti.java android反编译解决方案-----虚拟机方案 哈哈,终极解决方案是虚拟机...c++也可以反编译为汇编代码,但无需担心,因为读懂汇编太麻烦..只要不能拿到c++源码就可.. ...

  3. Build Instructions (Windows) – The Chromium Projects

    转自:http://121.199.54.6/wordpress/?p=1156 原始地址:http://www.chromium.org/developers/how-tos/build-instr ...

  4. Build Firefox 编译Firefox

    准备 选择需要的firefox版本 http://hg.mozilla.org/releases/ 选择最新的build工具 http://ftp.mozilla.org/pub/mozilla.or ...

  5. Sublime Text Build System——编译运行Java

    今天Google如何在ST中编译运行Java的时候,无意中发现了一个更好的方法. 其实,在ST中是可以编译Java的,但是运行不了,因为没有配置运行命令.那么一般的配置方法都是如下的: http:// ...

  6. 编写 Target 检测 MSBuild / dotnet build 此次编译是否是差量编译

    MSBuild 或 Roslyn 编译项目时均支持差量编译,毕竟为了性能.我在 每次都要重新编译?太慢!让跨平台的 MSBuild/dotnet build 的 Target 支持差量编译 一文中介绍 ...

  7. GoogleTest 之路2-Googletest 入门(Primer)

    Why googletest? 为啥要用GoogleTest呢? googletest 是由测试技术Team 开发的带有google 特殊的需求和限制的测试框架. 不管你在什么平台上写C++代码,go ...

  8. 使用pybind11为Python编写C++扩展(一)配置篇:Build(编译和链接)

    目录 Setuptools CMake 最后决定选用pybind11,理由如下: 比python原生的C API看起来人性多了 我的C++代码不是现成的,需要一定的C++开发工作量,所以感觉cytho ...

  9. ANGULAR 使用 ng build --prod 编译报内存错误的解决办法

    如果你遇到如下的情况 <--- Last few GCs ---> [13724:0000020D39C660D0] 231298 ms: Mark-sweep 1356.3 (1433. ...

随机推荐

  1. SQL SERVER CAST 和 CONVERT 函数

    遇到CAST 函数转化数字不一致情况, select CAST('0000000011237590798' AS money) / 100 AS Amount--output : 112375907. ...

  2. Jmeter (二十六)逻辑控制器 之 Module Controller and Include Controller

    Module Controller ---模块控制器 测试计划设置“独立运行没每个线程组” 线程组2中使用Module Controller执行线程组1中的Sampler: 紧接着,将线程组1disa ...

  3. 更新常用的js工具函数

    在手机调试时打印代码<script src="https://cdn.bootcss.com/vConsole/3.3.0/vconsole.min.js"></ ...

  4. BZOJ 4668: 冷战 并查集&&暴力LCA(雾)

    利用并查集按秩合并,保存每个点合并的时间: 求时间时,就一直跳u=fa[u],并记录路径上时间的最大值,代表最后一次合并的时间 #include<cstdio> #include<i ...

  5. HDU-1281-棋盘游戏(最大匹配,枚举)

    链接:https://vjudge.net/problem/HDU-1281 题目: 小希和Gardon在玩一个游戏:对一个N*M的棋盘,在格子里放尽量多的一些国际象棋里面的“车”,并且使得他们不能互 ...

  6. D-温暖的签到题

    链接:https://ac.nowcoder.com/acm/contest/892/D 题意: 给你一个长度为n的序列,初始为1,2,3...n,对其进行m次操作. 操作有两种: 1 l r  表示 ...

  7. NET Core 2.0 的 REST API

    用ASP.NET Core 2.0 建立规范的 REST API -- 预备知识 (2) + 准备项目 上一部分预备知识在这 http://www.cnblogs.com/cgzl/p/9010978 ...

  8. NET Core Hosting

    ASP.NET Core 运行原理解剖[1]:Hosting   ASP.NET Core 是新一代的 ASP.NET,第一次出现时代号为 ASP.NET vNext,后来命名为ASP.NET 5,随 ...

  9. 关于float和double类型能表示的数据范围和精度分析

    来自教材<计算机组成原理>p16 float:6--7位 double:15--16位 意思就是double类型的数据,你确实能表达出很大的数字,但是其只有15位是精确的. 1.计算机中, ...

  10. oracle v$database 视图

    Select db.dbid "数据库标识",--数据库的标识,当数据库在所有文件的头部创建和存储时计算出来的标记编号       db.Name "数据库名称" ...