【发布时间】:2014-08-25 00:29:59
【问题描述】:
一个游戏有这个:
我很好奇这是否是实际的构建时间,果然Crysis.exe(程序)的“文件上次修改”日期是03/31/2009, 01:40。
当然,开发人员可以轻松地手动输入该值,并在一分钟内构建应用程序,但我很好奇是否真的可以输入当前日期/时间(精确到秒)应用程序实际上正在构建。
这将有很多优点,包括轻松识别应用程序的不同版本。
这可能吗?
【问题讨论】:
一个游戏有这个:
我很好奇这是否是实际的构建时间,果然Crysis.exe(程序)的“文件上次修改”日期是03/31/2009, 01:40。
当然,开发人员可以轻松地手动输入该值,并在一分钟内构建应用程序,但我很好奇是否真的可以输入当前日期/时间(精确到秒)应用程序实际上正在构建。
这将有很多优点,包括轻松识别应用程序的不同版本。
这可能吗?
【问题讨论】:
是的,构建时间由__TIME__ 宏提供。在您的示例中,他们还使用提供日期的__DATE__ 宏。
【讨论】:
coliru;用于 C++ 代码的移动测试的绝佳站点;)。
是的。我想到了几种方法:
使用 C 的 __DATE__ 和 __TIME__ 宏。它们是标准的一部分,但是,它们占用了上次构建特定文件的时间。所以这意味着如果你例如将构建日期放在应用程序的 about 屏幕中,那么只有在您进行完整的干净构建或更改 about 屏幕源文件时才会更新日期。要解决此问题,您可以在构建过程中添加一个脚本,例如来电
touch AboutScreen.cpp
强制触发重建。
编写一个你在每次构建之前运行的 shell 脚本,它会生成一个类似的头文件
#define BUILD_DATE "2014-07-03 20:15"
并在每次构建之前运行该脚本。由于每次都会生成新文件,因此您的构建过程应该注意到它已更改并自动触发关于屏幕的新构建或显示构建日期/时间的任何内容。
【讨论】: