准备工作

为了在你的测试中使用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. [NWPU2016][寒假作业][正常版第二组]U

    题意,有箱子和物品,宽度一样,长度不一样,给定箱子和物品,一个箱子至多能装两个物品,一个物品只能被一个箱子装,求最少多少箱子能装所有的物品. 思路:贪心的话,很容易想到,从大到小排,从最大的开始,往后 ...

  2. struts2 具体学习资料

    [struts2]<package>的配置:https://www.cnblogs.com/ningvsban/p/3734562.html struts2  具体学习资料 :http:/ ...

  3. Spring Cloud Hystrix 服务容错保护

    目录 一.Hystrix 是什么 二.Hystrix断路器搭建 三.断路器优化 一.Hystrix 是什么 ​ 在微服务架构中,我们将系统拆分成了若干弱小的单元,单元与单元之间通过HTTP或者TCP等 ...

  4. 《springcloud 一》搭建注册中心,服务提供者,服务消费者

    注册中心环境搭建 Maven依赖信息 <parent> <groupId>org.springframework.boot</groupId> <artifa ...

  5. WebStorm快捷键(Mac版)

    编辑 Command+alt+T 用 (if..else, try..catch, for, etc.)包住 Command+/ 注释/取消注释的行注释 Command+alt+/ 注释/取消注释与块 ...

  6. 超文本传输协议(HTTP)

    超文本传输协议(HyperText Transfer Protocol,Http)是从服务器传输数据到客户端的传输协议. HTTP协议的主要特点可概括如下: 1.支持客户/服务器模式. 2.简单快速: ...

  7. 基本类型包装类、System类、Math类、Arrays类、大数据运算

    1 基本类型包装类 Java中想对8种基本数据类型进行复杂操作很困难. 实际程序界面上用户输入的数据都是以字符串类型进行存储的. 程序开发中,需要把字符串转换成指定的基本数据类型. 1.1基本数据类型 ...

  8. CSS布局技巧之——各种居中

    居中是我们使用css来布局时常遇到的情况.使用css来进行居中时,有时一个属性就能搞定,有时则需要一定的技巧才能兼容到所有浏览器,本文就居中的一些常用方法做个简单的介绍. 注:本文所讲方法除了特别说明 ...

  9. JFinal视频教程-JFnal学院分享课

    最近JFinal学院出了JFinal视频教程分享课,请笑纳~ 课程列表: 1.[JFinal版]微信小程序富文本渲染解决方案-html2wxml4J分享课 这个课程主要讲的是使用基于JFinal开发的 ...

  10. 日常-acm-子序列的和

    输入两个正整数n<m<10^6,输出,保留五位小数.输入包含多组数据,结束标记为n=m=0. 样例输入: 2 4 65536 655360 0 0 样例输出: Case 1:0.42361 ...