11

在一个 cpp 文件中,我使用__DATE__宏来获取编译日期。

它给了我最后一次编译该文件的日期。但由于文件不经常更改,大多数情况下日期是旧的,有时是几个月。

我真正想要的是项目最后一次构建的日期。

是否有设置强制 VS2010 在项目的每次编译时重建单个 cpp 文件?不管文件的变化?

到目前为止,我发现的唯一方法是在构建之前通过脚本修改文件或删除创建的 obj 文件,如果可能的话,我更喜欢 VS 中的解决方案。

4

3 回答 3

13

您可能会添加一个Pre-Build Steptouch请参阅此线程)文件?

要添加一个Pre-Build Step,打开你的Project PropertiesConfiguration Properties > Build Events > Pre-Build Event然后添加你想要在其中执行的命令行Command Line

按照 Amitd 的建议,显然您也可以touch使用 PowerShell 来创建文件,请参阅文件以获取解释。

正如 Adrian McCarthy 在下面的评论中所建议的那样,.obj在使用源代码控制并且您希望保留.cpp read-only. 使用 Visual Studio 公开的“宏”,可以轻松删除它们:

del $(TargetDir)sourcefile.obj

引自 Cheers and hth。- Alf 作为实现这一目标的另一种方式

nmake (bundled with Visual Studio and the SDK) option /t does a touch, it was once the conventional way to do this for Windows programmers.
于 2012-11-21T16:20:39.500 回答
1

您可以添加以下预构建步骤,您只需触摸文件的日期戳。这+,,copy命令的一个特殊标志,告诉它更新文件的时间戳:

copy file.cpp +,,
于 2018-03-13T14:33:08.200 回答
1

正如Adrian McCarthy 所建议的,您可以在每次构建项目时简单地删除目标文件。

del因此,创建一个调用该命令的预构建事件。根据微软的说法,您可以使用$(IntDir)宏来引用存储目标文件的目录(您不应该使用$(TargetDir)宏)。

我对命令的返回码(错误MSB3073)有疑问,因此我将命令更改为始终以0.

del $(IntDir)datefile.obj & exit 0

在项目配置中的Configuration Properties / Build Events下创建此构建事件。

于 2018-11-05T10:42:14.543 回答