# buildcounter

buildcounter is a small automatic (and ISC-licensed) tool that helps keeping track of different builds for projects in C/C++. It can be used in makefiles or as part of any project that supports custom post-build steps (like Visual Studio). It works by creating and modifying a header file that contains a define like this:

#define BUILDNO 17

buildcounter buildno.h

I recommend to do it after successful linking so that only successful builds increase the build count. Otherwise, fixing compile errors with many failed attempts lead to jumps in the build count. You can take a look at the makefile for this project to see how I use it.

Also run it once manually to make sure that buildno.h exists and contains the define. Include the buildno.h and use the define to output your build number.

buildcounter knows this parameters:

-s
Silent mode; this does not output the new contents to stdout
--version, -h or --help
Print the usage with versioning information and link to this repository
--
Use this parameter to use one of the other parameter names as the output filename (do you really want that?)

Do not change the contents of the output file manually. buildcounter will not overwrite files that do not begin with the expected #define BUILDNO <any number>\n and any changes after that line will be overwritten.

## Using buildcounter

To use buildcounter for your project, do this:

1
In your source folder, call buildcounter buildno.h manually. As this creates an internal header file, it should not go into a special include folder.
2
Create a target called "increasebuildcounter" in your makefile. Make it a .PHONY target. If you do not have a default target containing only dependencies yet, create one. Make it dependend to all necessary build steps and add the "increasebuildcounter" to the end.

Example:

all: withoutcounting increasebuildcounter

withoutcounting: a.out

a.out: test.c
gcc test.c

increasebuildcounter:
buildcounter -s buildno.h

3
In your code, include "buildno.h" and use BUILDNO. Build your code normally using the default target (or explicitly call "make all"). If you do not want to increase the counter after a specific build, call "make withoutcounting".