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. ...
随机推荐
- Django ORM 事务操作
事务 把一些列的操作(步骤)当作一个事务 全部的步骤都成功才成功 经典例子:银行转账 代码实现: import os if name == 'main': os.environ.setdefault( ...
- Codeforces Round #527-B. Teams Forming(贪心)
time limit per test 1 second memory limit per test 256 megabytes input standard input output standar ...
- X Samara Regional Intercollegiate Programming Contest DIV2
http://codeforces.com/gym/101341 其实我觉得这份题很不错的,虽然是div2,但是感觉对我挺有帮助(我比较垃圾0.0),还没补完(做的时候一直蒙逼,要补很多题)先写一点点 ...
- ECharts3.0介绍、入门
ECharts 特性介绍 ECharts,一个纯 Javascript 的图表库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(IE8/9/10/11,Chrome,Firefox,S ...
- enable assembly bind failure logging (Fusion) in .NET
今天遇到新建wcf项目编译成64位版本在64位windows上无法运气的,问题 先百度了一下如何查看程序集加载日志: Add the following values to HKEY_LOCAL_MA ...
- 两个页面实现mui轮播图与选项卡结合
index.html页面 <!DOCTYPE html><html><head> <meta charset="utf-8"> &l ...
- 【Android】ContentProvider
转载地址:http://www.cnblogs.com/lqminn/archive/2012/10/16/2725624.html 一.ContentProvider的概念 ContentProvi ...
- 初识RatingBar
RatingBar,SeekBar和ProgressBar的子类 <RatingBar android:id="@+id/ratingBar2" android:layout ...
- redmine安装详解
1.Linux:centos6.4(32位)2.Gcc的编译环境.使用make命令编辑.yum install gcc-c++ 3.PCRE PCRE(Perl Compatible Regular ...
- UWP开发:应用设置存储
应用设置储存指的是保存在应用程序储存区中的键/值对的字典集合,它自动负责序列化对象,并将其保存在应用程序里.以键/值对方式提供一种快速数据访问的方式,主要用于储存一些应用信息. 1,简介 应用设置是W ...