With no other requirement than Windows 7 and an internet connection, this tutorial walks you through all the steps leading up to a free development environment where you can code, build and unit test your C++ programs on Windows 7.
The steps and links were valid as of January 2013, but the internet is not a fixed environmnt ;-) For the most up to date information, consult the tool's own home pages.
1. Download and install the 64-bit version of Java from
(If you will be using a 32-bit version of Eclipse, you should be able to get away with 32-bit Java)
2. Download and install 'Eclipse for C/C++ Developers' from
(This tutorial is based on the 64-bit Juno version, but 32-bit should also work fine)
3. Download and run the latest MinGW installer from
When asked by the installer, check "MSYS Basic System" and the C++ compiler (Optionally uncheck the C compiler). IMPORTANT:Yes, youneedMSYS, because it containsrm, which is used by mingw32-make when cleaning builds. IMPORTANT:Youmustmanuallyadd MSYS and GCC to your Windows PATH, the MinGW installer intentionally doesnotdo this for you !! (Since I installed MinGW into C:\Apps\MinGw, I added C:\Apps\MinGw\bin\ and C:\Apps\MinGw\1.0\bin to my PATH)
4. Download GoogleTest from
and extract the zip file contents into a local directory.
Rename the directory to C:\Apps\googletest, so e.g. the file README ends up in that directory.
To build the googletest library I did as the googletest README says:
A. Open a DOS window
B. cd C:\Apps\googletest\make
C. mingw32-make
(This compiles the library)
D. ar -rv libgtest.a gtest-all.o
(This create the library libgtest.a out of the file gtest-all.o)
At this point, all the tools are installed.
The remaining steps will all be carried out in Eclipse, so start up Eclipse.
5. In Eclipse, create a brand new project for our C++ code:
Click File | New | C++ Project
Project name: my_fist_tdd_project
Project type : Executable, Hello World C++ Project
Toolchains : MinGw
The project Eclipse creates is empty, except for 6 include patchs for MinGw.
6. Change the project's builder to MinGw's builder:
Click Project | Properties | C++ Build | Tool Chain Editor
Select 'GNU Make Builder' in the 'Current builder' pull-down list.
Click Apply
7. Change the project's build command:
Click Project | Properties | C++ Build
Select '[All configurations]' in the 'Configuration' pull-down list.
Uncheck 'Use default build command'
Enter 'mingw32-make' in 'Build Command'.
Click Apply
8. You should now be able to test your build settings:
Click Project | Build project
The message "Info: Nothing to build for" appears in Eclipse's console.
9. Add the path of googletest's header files to the project's include paths:
Click Project | Properties | C++ Build
Make sure the selected build configuration is Debug (It is by default)
Click Settings | Tool Settings | GCC C++ Compiler | Includes
For the 'Include paths (-I)' list, click the green plus sign, thenthe File system.. button.
Browse to googletest's 'include' directory, and select it. (C:\Apps\googletest\include)
The absolute path now appears in the list box.
Click Apply
10. Add the path of the googletest library to the project's linker paths:
Click Project | Properties | C++ Build
Make sure the selected build configuration is Debug (It is by default)
Click Settings | Tool Settings | MinGW C++ Linker | Libraries
For the 'Libraries (-l)' list, click the green plus sign.
Enter 'gtest' in the pop-up window. (Note:not'libgtest.a')
This library name now appears in the list box.
For the 'Library search path (-L)' list, click the green plus sign,
then the File system.. button.
Browse to libgtest.a's directory, and select the dir. (C:\Apps\googletest\make)
The absolute path of the directory now appears in the list box.
Click Apply
11. Add a source folder:
Click File | New | Source folder
Folder name: src (Or whatever you prefer)
Now, in the final step, let's test our environment for completeness:
12. In the new src source folder, click File | New | Source file
Name itCounter.hand fill it with:
class Counter {
private:
int counter_;
public:
Counter() : counter_(0) {}
int Increment();
};
Add a second fileCounter.cppin the src folder, and fill it with:
#include
#include "Counter.h"
int Counter::Increment() {
return counter_++;
}
Add a third fileCounter_tests.cppto the src folder, and fill it with:
#include
using namespace std;
#include "gtest/gtest.h"
#include "Counter.h"
Click Project | Run
and expect to see the output from Counter_tests.cpp in Eclipse's Console window:
[==========] Running 1 test from 1 test case.
[----------] Global test environment set-up.
[----------] 1 test from Counter
[ RUN ] Counter.Increment
Congratulations, you have just run a test :-)
[ OK ] Counter.Increment (0 ms)
[----------] 1 test from Counter (0 ms total)
[----------] Global test environment tear-down
[==========] 1 test from 1 test case ran. (0 ms total)
[ PASSED ] 1 test.
The set-up is complete, you can now start coding awsome C++ applications, and unit test them with GoogleTest, in Eclipse. Happy coding!
-------------------------------------------------
Hint: You will get the error message
undefined reference to `WinMain@16'
from Eclipse if you forget the main() function in Counter_tests.cpp. Just copy the above Counter_tests.cpp and you should be fine.