【问题标题】:Is it possible to insert the build time into an application?是否可以将构建时间插入应用程序?
【发布时间】:2014-08-25 00:29:59
【问题描述】:

一个游戏有这个:

我很好奇这是否是实际的构建时间,果然Crysis.exe(程序)的“文件上次修改”日期是03/31/2009, 01:40

当然,开发人员可以轻松地手动输入该值,并在一分钟内构建应用程序,但我很好奇是否真的可以输入当前日期/时间(精确到秒)应用程序实际上正在构建。

这将有很多优点,包括轻松识别应用程序的不同版本。

这可能吗?

【问题讨论】:

    标签: c++ windows ctime


    【解决方案1】:

    是的,构建时间由__TIME__ 宏提供。在您的示例中,他们还使用提供日期的__DATE__ 宏。

    LIVE DEMO

    【讨论】:

    • @Link 提供现场演示。
    • @40two 啊,coliru;用于 C++ 代码的移动测试的绝佳站点;)。
    【解决方案2】:

    是的。我想到了几种方法:

    1. 使用 C 的 __DATE____TIME__ 宏。它们是标准的一部分,但是,它们占用了上次构建特定文件的时间。所以这意味着如果你例如将构建日期放在应用程序的 about 屏幕中,那么只有在您进行完整的干净构建或更改 about 屏幕源文件时才会更新日期。要解决此问题,您可以在构建过程中添加一个脚本,例如来电

      touch AboutScreen.cpp
      

      强制触发重建。

    2. 编写一个你在每次构建之前运行的 shell 脚本,它会生成一个类似的头文件

      #define BUILD_DATE  "2014-07-03 20:15"
      

      并在每次构建之前运行该脚本。由于每次都会生成新文件,因此您的构建过程应该注意到它已更改并自动触发关于屏幕的新构建或显示构建日期/时间的任何内容。

    【讨论】:

    • 严肃的公司在发布时总是使用干净的构建。这可以防止此类问题。它还有助于使构建可重现。
    • 完全同意。但是,如果您只是向同事抛出一个快速构建以验证修复并且他们在一个月后在他们的硬盘上找到它,那么即使在那里有正确的日期和时间也是有帮助的。此外,我怀疑“严肃的公司”描述了 Stack Overflow 的所有访问者。 :-)
    猜你喜欢
    • 2011-04-06
    • 2014-05-12
    • 1970-01-01
    • 1970-01-01
    • 2017-01-07
    • 2010-09-10
    • 1970-01-01
    • 2011-01-24
    • 1970-01-01
    相关资源
    最近更新 更多