1167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgGoogle C++ Testing Framework 2167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org============================ 3167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 4167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orghttp://code.google.com/p/googletest/ 5167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 6167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgOverview 7167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org-------- 8167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 9167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgGoogle's framework for writing C++ tests on a variety of platforms 10167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org(Linux, Mac OS X, Windows, Windows CE, Symbian, etc). Based on the 11167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgxUnit architecture. Supports automatic test discovery, a rich set of 12167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgassertions, user-defined assertions, death tests, fatal and non-fatal 13167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgfailures, various options for running the tests, and XML test report 14167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orggeneration. 15167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 16167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgPlease see the project page above for more information as well as the 17167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgmailing list for questions, discussions, and development. There is 18167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgalso an IRC channel on OFTC (irc.oftc.net) #gtest available. Please 19167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgjoin us! 20167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 21167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgRequirements for End Users 22167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org-------------------------- 23167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 24167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgGoogle Test is designed to have fairly minimal requirements to build 25167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.organd use with your projects, but there are some. Currently, we support 26167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgLinux, Windows, Mac OS X, and Cygwin. We will also make our best 27167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgeffort to support other platforms (e.g. Solaris, AIX, and z/OS). 28167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgHowever, since core members of the Google Test project have no access 29167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgto these platforms, Google Test may have outstanding issues there. If 30167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgyou notice any problems on your platform, please notify 31167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orggoogletestframework@googlegroups.com. Patches for fixing them are 32167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgeven more welcome! 33167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 34167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org### Linux Requirements ### 35167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 36167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgThese are the base requirements to build and use Google Test from a source 37167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgpackage (as described below): 38167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org * GNU-compatible Make or gmake 39167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org * POSIX-standard shell 40167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org * POSIX(-2) Regular Expressions (regex.h) 41167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org * A C++98-standard-compliant compiler 42167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 43167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org### Windows Requirements ### 44167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 45167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org * Microsoft Visual C++ 7.1 or newer 46167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 47167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org### Cygwin Requirements ### 48167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 49167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org * Cygwin 1.5.25-14 or newer 50167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 51167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org### Mac OS X Requirements ### 52167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 53167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org * Mac OS X 10.4 Tiger or newer 54167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org * Developer Tools Installed 55167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 56167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgAlso, you'll need CMake 2.6.4 or higher if you want to build the 57167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgsamples using the provided CMake script, regardless of the platform. 58167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 59167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgRequirements for Contributors 60167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org----------------------------- 61167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 62167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgWe welcome patches. If you plan to contribute a patch, you need to 63167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgbuild Google Test and its own tests from an SVN checkout (described 64167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgbelow), which has further requirements: 65167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 66167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org * Python version 2.3 or newer (for running some of the tests and 67167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org re-generating certain source files from templates) 68167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org * CMake 2.6.4 or newer 69167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 70167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgGetting the Source 71167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org------------------ 72167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 73167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgThere are two primary ways of getting Google Test's source code: you 74167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgcan download a stable source release in your preferred archive format, 75167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgor directly check out the source from our Subversion (SVN) repositary. 76167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgThe SVN checkout requires a few extra steps and some extra software 77167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgpackages on your system, but lets you track the latest development and 78167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgmake patches much more easily, so we highly encourage it. 79167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 80167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org### Source Package ### 81167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 82167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgGoogle Test is released in versioned source packages which can be 83167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgdownloaded from the download page [1]. Several different archive 84167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgformats are provided, but the only difference is the tools used to 85167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgmanipulate them, and the size of the resulting file. Download 86167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgwhichever you are most comfortable with. 87167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 88167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org [1] http://code.google.com/p/googletest/downloads/list 89167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 90167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgOnce the package is downloaded, expand it using whichever tools you 91167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgprefer for that type. This will result in a new directory with the 92167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgname "gtest-X.Y.Z" which contains all of the source code. Here are 93167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgsome examples on Linux: 94167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 95167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org tar -xvzf gtest-X.Y.Z.tar.gz 96167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org tar -xvjf gtest-X.Y.Z.tar.bz2 97167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org unzip gtest-X.Y.Z.zip 98167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 99167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org### SVN Checkout ### 100167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 101167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgTo check out the main branch (also known as the "trunk") of Google 102167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgTest, run the following Subversion command: 103167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 104167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org svn checkout http://googletest.googlecode.com/svn/trunk/ gtest-svn 105167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 106167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgSetting up the Build 107167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org-------------------- 108167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 109167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgTo build Google Test and your tests that use it, you need to tell your 110167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgbuild system where to find its headers and source files. The exact 111167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgway to do it depends on which build system you use, and is usually 112167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgstraightforward. 113167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 114167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org### Generic Build Instructions ### 115167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 116167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgSuppose you put Google Test in directory ${GTEST_DIR}. To build it, 117167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgcreate a library build target (or a project as called by Visual Studio 118167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.organd Xcode) to compile 119167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 120167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org ${GTEST_DIR}/src/gtest-all.cc 121167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 1220d106b34dc08439a7c6887d1316a3e1a35f8f0cajohannkoenig@chromium.orgwith ${GTEST_DIR}/include in the system header search path and ${GTEST_DIR} 1230d106b34dc08439a7c6887d1316a3e1a35f8f0cajohannkoenig@chromium.orgin the normal header search path. Assuming a Linux-like system and gcc, 124167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgsomething like the following will do: 125167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 1260d106b34dc08439a7c6887d1316a3e1a35f8f0cajohannkoenig@chromium.org g++ -isystem ${GTEST_DIR}/include -I${GTEST_DIR} \ 1270d106b34dc08439a7c6887d1316a3e1a35f8f0cajohannkoenig@chromium.org -pthread -c ${GTEST_DIR}/src/gtest-all.cc 128167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org ar -rv libgtest.a gtest-all.o 129167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 1300d106b34dc08439a7c6887d1316a3e1a35f8f0cajohannkoenig@chromium.org(We need -pthread as Google Test uses threads.) 1310d106b34dc08439a7c6887d1316a3e1a35f8f0cajohannkoenig@chromium.org 132167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgNext, you should compile your test source file with 1330d106b34dc08439a7c6887d1316a3e1a35f8f0cajohannkoenig@chromium.org${GTEST_DIR}/include in the system header search path, and link it 1340d106b34dc08439a7c6887d1316a3e1a35f8f0cajohannkoenig@chromium.orgwith gtest and any other necessary libraries: 135167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 1360d106b34dc08439a7c6887d1316a3e1a35f8f0cajohannkoenig@chromium.org g++ -isystem ${GTEST_DIR}/include -pthread path/to/your_test.cc libgtest.a \ 1370d106b34dc08439a7c6887d1316a3e1a35f8f0cajohannkoenig@chromium.org -o your_test 138167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 139167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgAs an example, the make/ directory contains a Makefile that you can 140167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orguse to build Google Test on systems where GNU make is available 141167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org(e.g. Linux, Mac OS X, and Cygwin). It doesn't try to build Google 142167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgTest's own tests. Instead, it just builds the Google Test library and 143167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orga sample test. You can use it as a starting point for your own build 144167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgscript. 145167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 146167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgIf the default settings are correct for your environment, the 147167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgfollowing commands should succeed: 148167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 149167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org cd ${GTEST_DIR}/make 150167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org make 151167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org ./sample1_unittest 152167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 153167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgIf you see errors, try to tweak the contents of make/Makefile to make 154167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgthem go away. There are instructions in make/Makefile on how to do 155167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgit. 156167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 157167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org### Using CMake ### 158167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 159167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgGoogle Test comes with a CMake build script (CMakeLists.txt) that can 160167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgbe used on a wide range of platforms ("C" stands for cross-platofrm.). 161167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgIf you don't have CMake installed already, you can download it for 162167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgfree from http://www.cmake.org/. 163167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 164167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgCMake works by generating native makefiles or build projects that can 165167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgbe used in the compiler environment of your choice. The typical 166167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgworkflow starts with: 167167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 168167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org mkdir mybuild # Create a directory to hold the build output. 169167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org cd mybuild 170167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org cmake ${GTEST_DIR} # Generate native build scripts. 171167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 172167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgIf you want to build Google Test's samples, you should replace the 173167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orglast command with 174167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 175167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org cmake -Dgtest_build_samples=ON ${GTEST_DIR} 176167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 177167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgIf you are on a *nix system, you should now see a Makefile in the 178167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgcurrent directory. Just type 'make' to build gtest. 179167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 180167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgIf you use Windows and have Vistual Studio installed, a gtest.sln file 181167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.organd several .vcproj files will be created. You can then build them 182167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgusing Visual Studio. 183167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 184167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgOn Mac OS X with Xcode installed, a .xcodeproj file will be generated. 185167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 186167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org### Legacy Build Scripts ### 187167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 188167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgBefore settling on CMake, we have been providing hand-maintained build 189167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgprojects/scripts for Visual Studio, Xcode, and Autotools. While we 190167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgcontinue to provide them for convenience, they are not actively 191167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgmaintained any more. We highly recommend that you follow the 192167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orginstructions in the previous two sections to integrate Google Test 193167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgwith your existing build system. 194167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 195167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgIf you still need to use the legacy build scripts, here's how: 196167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 197167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgThe msvc\ folder contains two solutions with Visual C++ projects. 198167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgOpen the gtest.sln or gtest-md.sln file using Visual Studio, and you 199167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgare ready to build Google Test the same way you build any Visual 200167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgStudio project. Files that have names ending with -md use DLL 201167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgversions of Microsoft runtime libraries (the /MD or the /MDd compiler 202167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgoption). Files without that suffix use static versions of the runtime 203167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orglibraries (the /MT or the /MTd option). Please note that one must use 204167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgthe same option to compile both gtest and the test code. If you use 205167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgVisual Studio 2005 or above, we recommend the -md version as /MD is 206167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgthe default for new projects in these versions of Visual Studio. 207167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 208167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgOn Mac OS X, open the gtest.xcodeproj in the xcode/ folder using 209167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgXcode. Build the "gtest" target. The universal binary framework will 210167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgend up in your selected build directory (selected in the Xcode 211167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org"Preferences..." -> "Building" pane and defaults to xcode/build). 212167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgAlternatively, at the command line, enter: 213167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 214167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org xcodebuild 215167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 216167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgThis will build the "Release" configuration of gtest.framework in your 217167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgdefault build location. See the "xcodebuild" man page for more 218167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orginformation about building different configurations and building in 219167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgdifferent locations. 220167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 2210d106b34dc08439a7c6887d1316a3e1a35f8f0cajohannkoenig@chromium.orgIf you wish to use the Google Test Xcode project with Xcode 4.x and 2220d106b34dc08439a7c6887d1316a3e1a35f8f0cajohannkoenig@chromium.orgabove, you need to either: 2230d106b34dc08439a7c6887d1316a3e1a35f8f0cajohannkoenig@chromium.org * update the SDK configuration options in xcode/Config/General.xconfig. 2240d106b34dc08439a7c6887d1316a3e1a35f8f0cajohannkoenig@chromium.org Comment options SDKROOT, MACOS_DEPLOYMENT_TARGET, and GCC_VERSION. If 2250d106b34dc08439a7c6887d1316a3e1a35f8f0cajohannkoenig@chromium.org you choose this route you lose the ability to target earlier versions 2260d106b34dc08439a7c6887d1316a3e1a35f8f0cajohannkoenig@chromium.org of MacOS X. 2270d106b34dc08439a7c6887d1316a3e1a35f8f0cajohannkoenig@chromium.org * Install an SDK for an earlier version. This doesn't appear to be 2280d106b34dc08439a7c6887d1316a3e1a35f8f0cajohannkoenig@chromium.org supported by Apple, but has been reported to work 2290d106b34dc08439a7c6887d1316a3e1a35f8f0cajohannkoenig@chromium.org (http://stackoverflow.com/questions/5378518). 2300d106b34dc08439a7c6887d1316a3e1a35f8f0cajohannkoenig@chromium.org 231167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgTweaking Google Test 232167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org-------------------- 233167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 234167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgGoogle Test can be used in diverse environments. The default 235167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgconfiguration may not work (or may not work well) out of the box in 236167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgsome environments. However, you can easily tweak Google Test by 237167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgdefining control macros on the compiler command line. Generally, 238167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgthese macros are named like GTEST_XYZ and you define them to either 1 239167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgor 0 to enable or disable a certain feature. 240167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 241167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgWe list the most frequently used macros below. For a complete list, 242167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgsee file include/gtest/internal/gtest-port.h. 243167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 244167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org### Choosing a TR1 Tuple Library ### 245167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 246167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgSome Google Test features require the C++ Technical Report 1 (TR1) 247167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgtuple library, which is not yet available with all compilers. The 248167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orggood news is that Google Test implements a subset of TR1 tuple that's 249167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgenough for its own need, and will automatically use this when the 250167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgcompiler doesn't provide TR1 tuple. 251167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 252167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgUsually you don't need to care about which tuple library Google Test 253167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orguses. However, if your project already uses TR1 tuple, you need to 254167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgtell Google Test to use the same TR1 tuple library the rest of your 255167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgproject uses, or the two tuple implementations will clash. To do 256167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgthat, add 257167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 258167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org -DGTEST_USE_OWN_TR1_TUPLE=0 259167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 260167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgto the compiler flags while compiling Google Test and your tests. If 261167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgyou want to force Google Test to use its own tuple library, just add 262167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 263167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org -DGTEST_USE_OWN_TR1_TUPLE=1 264167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 265167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgto the compiler flags instead. 266167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 267167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgIf you don't want Google Test to use tuple at all, add 268167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 269167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org -DGTEST_HAS_TR1_TUPLE=0 270167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 271167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.organd all features using tuple will be disabled. 272167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 273167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org### Multi-threaded Tests ### 274167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 275167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgGoogle Test is thread-safe where the pthread library is available. 276167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgAfter #include "gtest/gtest.h", you can check the GTEST_IS_THREADSAFE 277167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgmacro to see whether this is the case (yes if the macro is #defined to 278167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org1, no if it's undefined.). 279167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 280167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgIf Google Test doesn't correctly detect whether pthread is available 281167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgin your environment, you can force it with 282167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 283167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org -DGTEST_HAS_PTHREAD=1 284167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 285167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgor 286167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 287167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org -DGTEST_HAS_PTHREAD=0 288167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 289167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgWhen Google Test uses pthread, you may need to add flags to your 290167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgcompiler and/or linker to select the pthread library, or you'll get 291167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orglink errors. If you use the CMake script or the deprecated Autotools 292167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgscript, this is taken care of for you. If you use your own build 293167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgscript, you'll need to read your compiler and linker's manual to 294167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgfigure out what flags to add. 295167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 296167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org### As a Shared Library (DLL) ### 297167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 298167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgGoogle Test is compact, so most users can build and link it as a 299167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgstatic library for the simplicity. You can choose to use Google Test 300167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgas a shared library (known as a DLL on Windows) if you prefer. 301167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 302167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgTo compile *gtest* as a shared library, add 303167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 304167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org -DGTEST_CREATE_SHARED_LIBRARY=1 305167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 306167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgto the compiler flags. You'll also need to tell the linker to produce 307167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orga shared library instead - consult your linker's manual for how to do 308167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgit. 309167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 310167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgTo compile your *tests* that use the gtest shared library, add 311167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 312167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org -DGTEST_LINKED_AS_SHARED_LIBRARY=1 313167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 314167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgto the compiler flags. 315167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 316167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgNote: while the above steps aren't technically necessary today when 317167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgusing some compilers (e.g. GCC), they may become necessary in the 318167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgfuture, if we decide to improve the speed of loading the library (see 319167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orghttp://gcc.gnu.org/wiki/Visibility for details). Therefore you are 320167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgrecommended to always add the above flags when using Google Test as a 321167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgshared library. Otherwise a future release of Google Test may break 322167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgyour build script. 323167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 324167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org### Avoiding Macro Name Clashes ### 325167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 326167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgIn C++, macros don't obey namespaces. Therefore two libraries that 327167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgboth define a macro of the same name will clash if you #include both 328167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgdefinitions. In case a Google Test macro clashes with another 329167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orglibrary, you can force Google Test to rename its macro to avoid the 330167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgconflict. 331167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 332167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgSpecifically, if both Google Test and some other code define macro 333167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgFOO, you can add 334167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 335167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org -DGTEST_DONT_DEFINE_FOO=1 336167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 337167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgto the compiler flags to tell Google Test to change the macro's name 338167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgfrom FOO to GTEST_FOO. Currently FOO can be FAIL, SUCCEED, or TEST. 339167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgFor example, with -DGTEST_DONT_DEFINE_TEST=1, you'll need to write 340167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 341167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org GTEST_TEST(SomeTest, DoesThis) { ... } 342167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 343167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orginstead of 344167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 345167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org TEST(SomeTest, DoesThis) { ... } 346167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 347167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgin order to define a test. 348167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 349167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgUpgrating from an Earlier Version 350167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org--------------------------------- 351167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 352167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgWe strive to keep Google Test releases backward compatible. 353167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgSometimes, though, we have to make some breaking changes for the 354167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgusers' long-term benefits. This section describes what you'll need to 355167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgdo if you are upgrading from an earlier version of Google Test. 356167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 357167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org### Upgrading from 1.3.0 or Earlier ### 358167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 359167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgYou may need to explicitly enable or disable Google Test's own TR1 360167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgtuple library. See the instructions in section "Choosing a TR1 Tuple 361167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgLibrary". 362167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 363167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org### Upgrading from 1.4.0 or Earlier ### 364167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 365167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgThe Autotools build script (configure + make) is no longer officially 366167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgsupportted. You are encouraged to migrate to your own build system or 367167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orguse CMake. If you still need to use Autotools, you can find 368167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orginstructions in the README file from Google Test 1.4.0. 369167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 370167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgOn platforms where the pthread library is available, Google Test uses 371167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgit in order to be thread-safe. See the "Multi-threaded Tests" section 372167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgfor what this means to your build script. 373167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 374167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgIf you use Microsoft Visual C++ 7.1 with exceptions disabled, Google 375167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgTest will no longer compile. This should affect very few people, as a 376167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orglarge portion of STL (including <string>) doesn't compile in this mode 377167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.organyway. We decided to stop supporting it in order to greatly simplify 378167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgGoogle Test's implementation. 379167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 380167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgDeveloping Google Test 381167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org---------------------- 382167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 383167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgThis section discusses how to make your own changes to Google Test. 384167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 385167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org### Testing Google Test Itself ### 386167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 387167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgTo make sure your changes work as intended and don't break existing 388167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgfunctionality, you'll want to compile and run Google Test's own tests. 389167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgFor that you can use CMake: 390167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 391167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org mkdir mybuild 392167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org cd mybuild 393167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org cmake -Dgtest_build_tests=ON ${GTEST_DIR} 394167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 395167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgMake sure you have Python installed, as some of Google Test's tests 396167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgare written in Python. If the cmake command complains about not being 397167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgable to find Python ("Could NOT find PythonInterp (missing: 398167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgPYTHON_EXECUTABLE)"), try telling it explicitly where your Python 399167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgexecutable can be found: 400167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 401167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org cmake -DPYTHON_EXECUTABLE=path/to/python -Dgtest_build_tests=ON ${GTEST_DIR} 402167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 403167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgNext, you can build Google Test and all of its own tests. On *nix, 404167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgthis is usually done by 'make'. To run the tests, do 405167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 406167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org make test 407167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 408167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgAll tests should pass. 409167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 410167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org### Regenerating Source Files ### 411167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 412167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgSome of Google Test's source files are generated from templates (not 413167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgin the C++ sense) using a script. A template file is named FOO.pump, 414167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgwhere FOO is the name of the file it will generate. For example, the 415167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgfile include/gtest/internal/gtest-type-util.h.pump is used to generate 416167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orggtest-type-util.h in the same directory. 417167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 418167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgNormally you don't need to worry about regenerating the source files, 419167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgunless you need to modify them. In that case, you should modify the 420167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgcorresponding .pump files instead and run the pump.py Python script to 421167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgregenerate them. You can find pump.py in the scripts/ directory. 422167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgRead the Pump manual [2] for how to use it. 423167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 424167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org [2] http://code.google.com/p/googletest/wiki/PumpManual 425167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 426167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org### Contributing a Patch ### 427167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 428167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgWe welcome patches. Please read the Google Test developer's guide [3] 429167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgfor how you can contribute. In particular, make sure you have signed 430167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgthe Contributor License Agreement, or we won't be able to accept the 431167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgpatch. 432167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 433167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org [3] http://code.google.com/p/googletest/wiki/GoogleTestDevGuide 434167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org 435167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgHappy testing! 436