Question

How would I print the date and time for the purposes of the build. Ie: When the console for my application starts up I want to do this:

Binary Build date: 03/03/2009 @ 10:00AM

I think this would be a super useful function for all applications to have behind the scenes for programmers, especially in a team environment.

Is there a simple way to do this using Visual Studio 2008 in C++. Thanks.

Was it helpful?

Solution

Use preprocessor's __DATE__ and __TIME__.

printf("Binary build date: %s @ %s\n", __DATE__, __TIME__);

For making sure that cpp file that contains this code is really compiled, I use touch-utility for file as a pre-build step: touch file.cpp

Touch.bat:

@copy nul: /b +%1 tmp.$$$
@move tmp.$$$ %1

OTHER TIPS

You can use the macros __TIME__ and __DATE__. Note the double underscores. These are unrolled at compile time and hence you will get the last compile time saved in your file(s).

Note that the time and date macros only work as desired if the particular file containing them is guaranteed to be compiled during every build.

One way of doing this would be using the built-in __DATE__ and __TIME__ macros. From MSDN (for VS 2005):

__DATE__: The compilation date of the current source file. The date is a string literal of the form Mmm dd yyyy. The month name Mmm is the same as for dates generated by the library function asctime declared in TIME.H.

__TIME__: The most recent compilation time of the current source file. The time is a string literal of the form hh:mm:ss.

Similar to Virne's answer I created a simple header file called "BuildDate.h" with the following contents:

#define BUILD_DATE __DATE__ " " __TIME__

I touch the file using GnuWin32 touch command in my pre-build event:

touch.exe BuildDate.h

Then I include the header file in any code where I want access to the BUILD_DATE string. E.g.:

#include "BuildDate.h"
...
logger->Log("Build Date: " BUILD_DATE);
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top