我应该如何打印日期和时间以用于构建目的。例如:当我的应用程序控制台启动时,我想要这样做:
Binary Build date: 03/03/2009 @ 10:00AM
我认为这将是所有应用程序在幕后为程序员提供的超级有用的功能,特别是在团队环境中。是否有一种简单的方法可以使用Visual Studio 2008中的C++实现这个功能?谢谢。
我应该如何打印日期和时间以用于构建目的。例如:当我的应用程序控制台启动时,我想要这样做:
Binary Build date: 03/03/2009 @ 10:00AM
我认为这将是所有应用程序在幕后为程序员提供的超级有用的功能,特别是在团队环境中。使用预处理器的__DATE__
和__TIME__
。
printf("Binary build date: %s @ %s\n", __DATE__, __TIME__);
为确保包含这段代码的cpp文件已编译,我使用touch实用程序作为预构建步骤来触发文件:touch file.cpp
Touch.bat:
@copy nul: /b +%1 tmp.$$$
@move tmp.$$$ %1
del $(OutDir)\file.obj
。 - Joel Fdel $(IntermediateOutputPath)\$(TargetName).obj
- 如预期般工作。 - szamil__TIME__
和__DATE__
。请注意双下划线。这些在编译时展开,因此您将得到保存在文件中的最后一次编译时间。与Virne的回答类似,我创建了一个名为“BuildDate.h”的简单头文件,其内容如下:
#define BUILD_DATE __DATE__ " " __TIME__
我在预构建事件中使用GnuWin32的touch命令来触摸文件:
touch.exe BuildDate.h
然后我在任何需要访问BUILD_DATE
字符串的代码中包含头文件。例如:
#include "BuildDate.h"
...
logger->Log("Build Date: " BUILD_DATE);
一种方法是使用内置的__DATE__
和__TIME__
宏。来自MSDN(适用于VS 2005):
__DATE__
: 当前源文件的编译日期。日期是一个字符串字面量,格式为Mmm dd yyyy。月份名称Mmm与在TIME.H中声明的asctime库函数生成的日期相同。
__TIME__
: 当前源文件的最近编译时间。时间是一个字符串字面量,格式为hh:mm:ss。