GoogleTest 之路1-Generic Build Instructions编译指导总方案
准备工作
为了在你的测试中使用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编译指导总方案的更多相关文章
- build.xml编译报错Specified VM install not found: type Standard VM, name jdk1.7.0_45
build.xml编译打包时报错: 解决方法: build.xml —— 右键 —— Run As —— External Tools Configuration 在这个页面的顶端就会看到有红叉 ...
- Atitti.java android反编译解决方案-----虚拟机方案
Atitti.java android反编译解决方案-----虚拟机方案 哈哈,终极解决方案是虚拟机...c++也可以反编译为汇编代码,但无需担心,因为读懂汇编太麻烦..只要不能拿到c++源码就可.. ...
- Build Instructions (Windows) – The Chromium Projects
转自:http://121.199.54.6/wordpress/?p=1156 原始地址:http://www.chromium.org/developers/how-tos/build-instr ...
- Build Firefox 编译Firefox
准备 选择需要的firefox版本 http://hg.mozilla.org/releases/ 选择最新的build工具 http://ftp.mozilla.org/pub/mozilla.or ...
- Sublime Text Build System——编译运行Java
今天Google如何在ST中编译运行Java的时候,无意中发现了一个更好的方法. 其实,在ST中是可以编译Java的,但是运行不了,因为没有配置运行命令.那么一般的配置方法都是如下的: http:// ...
- 编写 Target 检测 MSBuild / dotnet build 此次编译是否是差量编译
MSBuild 或 Roslyn 编译项目时均支持差量编译,毕竟为了性能.我在 每次都要重新编译?太慢!让跨平台的 MSBuild/dotnet build 的 Target 支持差量编译 一文中介绍 ...
- GoogleTest 之路2-Googletest 入门(Primer)
Why googletest? 为啥要用GoogleTest呢? googletest 是由测试技术Team 开发的带有google 特殊的需求和限制的测试框架. 不管你在什么平台上写C++代码,go ...
- 使用pybind11为Python编写C++扩展(一)配置篇:Build(编译和链接)
目录 Setuptools CMake 最后决定选用pybind11,理由如下: 比python原生的C API看起来人性多了 我的C++代码不是现成的,需要一定的C++开发工作量,所以感觉cytho ...
- ANGULAR 使用 ng build --prod 编译报内存错误的解决办法
如果你遇到如下的情况 <--- Last few GCs ---> [13724:0000020D39C660D0] 231298 ms: Mark-sweep 1356.3 (1433. ...
随机推荐
- 15 Puzzle LightOJ - 1121
https://cn.vjudge.net/problem/LightOJ-1121 #include<cstdio> #include<algorithm> #include ...
- Hive进阶_Hive的子查询
- 集合中如果含null数据,不可使用not in, 可以使用in- hive只支持where和from子句中的子查询- 主查询和自查询可以不是同一张表 select e.ename from emp ...
- net core 2.0 web api + Identity Server 4 + angular 5
net core 2.0 web api + Identity Server 4 + angular 5前台使用angular 5, 后台是asp.net core 2.0 web api + ide ...
- 关于C#解析shp文件
最近在做项目时,要求可以上传shp文件到指定的地图中,地图开发使用的arcgisapi,网上找了好多解析shp文件的js,但都不是太理想,直到群里的小伙伴提到Gdal 首先,到GDAL官网下载自己使用 ...
- sqlserver 数据库 的数据库个数统计 表个数统计 表的数据量统计(转载)
http://www.cnblogs.com/qinche/archive/2012/08/09/app.html 由于今天要监控数据,急需统计实例中1有多少库2库里有多少表3每个表有多少数据 --将 ...
- 常用API(包装类、System、Math、Arrays、大数据运算)
常用API 今日内容介绍 u 基本类型包装类 u System u Math u Arrays u BigInteger u BigDecimal 第1章 基本类型包装类 大家回想下,在第二天我们学习 ...
- is 和 == 区别 编码的问题 id()函数
一丶is 和 == 的区别 == 比较的是值 is 比较的是内存地址 #字符串 a = "abc" b = "abc" print(a == b) print( ...
- python生成器简单代码了理解。
__author__ = 'ZHHT' #!/usr/bin/env python # -*- coding:utf-8 -*- #返回当前执行到的函数的返回值.并保持当前执行的状态.这时候先执行别的 ...
- JDK8下的HashMap有什么特别之处?
一.前言 上篇认真的分析了在JDK7下的HashMap, 如果还没看过的或者忘记了的可以先去回顾下,这样可以更好的了解JDK8下的HashMap基于JDK7做了什么改动.分析JDK8下的HashMap ...
- Centos 7 搭建git服务器及使用gitolite控制权限
一.安装git yum install git git --version #查看git版本 二.升级git(可选,如果之前已经安装git,需要升级git到最新版本) git clone https: ...