Skip to content

Commit 97a4bc5

Browse files
authored
Merge pull request #43 from jwgrenning/master
MakefileWorker.mk
2 parents 74f1d4b + 4e193d4 commit 97a4bc5

File tree

2 files changed

+55
-6
lines changed

2 files changed

+55
-6
lines changed

index.markdown

Lines changed: 51 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,17 @@ CppUTest's core design principles are:
1111

1212
* Simple in design and simple in use.
1313
* Portable to old and new platforms.
14-
* Build with Test-driven Development in mind
14+
* Build with Test-driven Development for Test-driven Developers.
1515

16-
## Where to get CppUTest
16+
## Setting up CppUTest
1717

18-
### Pre-packaged
18+
There are several ways to setup CppUTest. One is to install via package management and the other is from source. The big difference is that from source you can use `MakefileWorker.mk`. MakefileWorker is not supported pre-packaged. MakefileWorker does not require you to know a lot about `make` and makefiles to get started.
19+
20+
An easy way to get your first test case running is to use James Grenning's [cpputest-starter-project for gcc](https://github.com/jwgrenning/cpputest-starter-project) or [cpputest-starter-project for Visual Studio](https://github.com/jwgrenning/cpputest-starter-project-vs). James is the author of [Test-Driven Development for Embedded C](https://wingman-sw.com/tddec). You'll find instructions, your first test case, and some other example code. James' training resources use MakefileWorker, so you need to install from source.
21+
22+
Adding tests to untested C and C++ can be a big challenge. You might find [Get your Legacy C into a Test Harness](https://wingman-sw.com/articles/tdd-legacy-c) a useful recipe and resource. The page includes links to numerous articles of real legacy C challenges.
23+
24+
### Pre-packaged install
1925

2026
*Linux*
2127

@@ -33,11 +39,11 @@ For Mac, a Homebrew package is available too. You can install via:
3339
$ brew install cpputest
3440
{% endhighlight %}
3541

36-
### From source
42+
### From source install
3743

3844
You can download the latest 'automatically released' version:
3945

40-
* [Latest version passing the build](https://github.com/cpputest/cpputest.github.io/blob/master/releases/cpputest-3.7dev.tar.gz?raw=true)
46+
* [Latest version passing the build](https://github.com/cpputest/cpputest.github.io/blob/master/releases/cpputest-3.8dev.tar.gz?raw=true)
4147
This version is automatically packages after a build has passed.
4248

4349
Alternatively, you can clone the github repository, read-only:
@@ -52,7 +58,13 @@ Or clone it via ssh (which requires a github account)
5258
$ git clone git@github.com:cpputest/cpputest.git
5359
{% endhighlight %}
5460

55-
After you have cloned CppUTest, you can build it with your favorite build tool (CMake or autoconf).
61+
CppUTest can also be added to your git repo as a git submodule.
62+
63+
{% highlight bash %}
64+
$ git submodule add https://github.com/cpputest/cpputest.git
65+
{% endhighlight %}
66+
67+
Now that you have CppUTest sources, you can build it with your favorite build tool (CMake or autoconf).
5668

5769
Building with autoconf requires you to (this requires you to have installed GNU autotools, apt-get/brew install automake autoconf libtool):
5870

@@ -63,6 +75,39 @@ $ ../configure
6375
$ make
6476
{% endhighlight %}
6577

78+
**NOTE**: Building from `cpputest_build` means you will not be able to use `MakefileWorker.mk`. To use MakefileWorker you need to build from the cpputest home directory.
79+
80+
### Using CppUTest with `MakefileWorker.mk` and gcc
81+
82+
If you want to use CppUTest's `MakefileWorker.mk`, you cannot currently get CppUTest using the "Pre-packaged" options described above. Instead you can get CppUTest from source using the options already described.
83+
84+
Change to the top level directory of CppUTest (the directory containing `include/` and `src/` among other files)
85+
86+
{% highlight bash %}
87+
$ cd cpputest \
88+
$ autoreconf . -i
89+
$ ./configure
90+
$ make tdd
91+
$ export CPPUTEST_HOME=$(pwd).
92+
{% endhighlight %}
93+
94+
You will want to add `export CPPUTEST_HOME=<path>` somewhere like `.bashrc` or in your build script as a relative path.
95+
96+
### Using CppUTest with `MakefileWorker.mk` and Visual Studio
97+
98+
You can build CppUTest using cmake or in the Visual Studio IDE.
99+
100+
*from Visual Studio IDE*
101+
102+
Depending on your VS version double click either
103+
104+
* `CppUTest_VS201x.sln` - for VS 2010 and later
105+
* `CppUTest.sln` - for pre VS 2010
106+
107+
Say yes to suggested conversions. Select the menu item corresponding to run without debugging. CppUTest should build (probably with warnings). When the build completes the test runner runs. You should see over 1000 tests passing and no test failures. The build also produced a static library (cpputest/lib) holding CppUTest you can link your tests to.
108+
109+
To use CppUTest, define an environment variable `CPPUTEST_HOME` that points to the home directory of CppUTest. You will find a working example and some more help in [cpputest-starter-project for Visual Studio](https://github.com/jwgrenning/cpputest-starter-project-vs).
110+
66111
## How to create a coverage report
67112

68113
You can use autoconf to create a coverage report for CppUTests own tests. If you have lcov installed, a browsable html report will be generated as well. After the steps outlined in the previous paragraph, do the following:

manual.markdown

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -379,6 +379,10 @@ public:
379379

380380
Yes, its ugly. But usually people don't overload operator new everywhere. If you do, consider turning off the new macro completely.
381381

382+
### Other conflicts in the test file only
383+
384+
If your conflict is only in the test code files, put the CppUTest includes after your includes. Because of this potential conflict, its a good idea to put the CppUTest includes after your includes as a preemptive measure.
385+
382386
### Conflicts with MFC
383387

384388
Tbd

0 commit comments

Comments
 (0)