【问题标题】:Add build date (VS 2010 - C++)添加构建日期(VS 2010 - C++)
【发布时间】:2011-04-09 05:02:44
【问题描述】:

最近我在 XNA 和 AssemblyInfo 源文件中构建了一个游戏,我可以将 AssemblyVersion 设置为 x.x.*,它将构建和修订设置为项目编译的日期和时间。我现在正在用 C++ 做一个项目,我想知道如何复制该功能。两者都是为了让 exe 文件显示该版本以及我可以通过编程方式获取它的方式。谢谢。

【问题讨论】:

标签: c# c++ visual-studio visual-studio-2010


【解决方案1】:

【讨论】:

  • 它们确实很有用,但不是很准确:在 VS 中,您可以编译单个文件 a.cpp,几周后返回,更改其他所有内容,然后构建整个项目。放在 a.obj 中的日期仍将是原始日期。
  • @stijn 你确定吗? (我很感兴趣,因为我经常使用 DATE)并且从未观察到这一点。
  • 我刚刚再次测试了它,是的,我确信它可以这样工作。取任何 dll/exe 项目,添加 #define stringize( x ) stringizei( x ) #define stringizei( x ) #x const char* date = "myTime" stringize(TIME);到源文件,编译它,等待一段时间然后构建。在文本编辑器中打开可执行文件并查找“myTime”,您将看到原始时间。
  • 顺便说一句,一个很好的方法是使用预构建或构建后事件,您可以在其中以某种方式将日期/时间注入构建。我使用了一个预构建事件,该事件调用在 AssemblyInfo(或 C++ 的版本资源)中设置日期、时间和 VCS 版本号的可执行文件。另一种方法是:总是重建;]
  • 关于标准构建期间的准确性,在您准备好交付产品之前,您通常并不关心。那时你无论如何都会做一个干净的构建,一切都会自动更新。但我确实同意预构建事件是要走的路。
【解决方案2】:

我相信添加 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.

【讨论】:

    猜你喜欢
    • 2012-08-22
    • 2013-06-16
    • 1970-01-01
    • 2011-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多