强制 MS VS2010 在每次构建时重建一个 cpp 文件



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

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

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

是否有一个设置可以强制VS2010在项目的每次编译中重建单个cpp文件?不管文件中的更改如何?

到目前为止,我

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

您可能会添加一个touch(请参阅此线程)文件的Pre-Build Step

要添加Pre-Build Step,请打开Project Properties,然后Configuration Properties > Build Events > Pre-Build Event添加要在Command Line中执行的命令行。

根据Amitd的建议,显然您也可以使用PowerShell touch文件,请参阅此处以获取说明。

正如 Adrian McCarthy 在下面的评论中所建议的那样,在使用源代码管理并且您希望保留.cpp read-only的情况下,最好删除.obj文件。使用Visual Studio公开的"宏",可以轻松删除它们:

del $(TargetDir)sourcefile.obj

引自 干杯和 hth. - 阿尔夫作为实现这一目标的另一种方式

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.

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

copy file.cpp +,,

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

因此,请创建一个调用 del 命令的预生成事件。根据Microsoft,您可以使用$(IntDir)宏来引用存储目标文件的目录(不应使用 $(TargetDir) 宏)。

我对命令的返回代码有问题(错误MSB3073),因此我将命令更改为始终以0退出。

del $(IntDir)datefile.obj & exit 0

在项目配置中的"配置属性"/"生成事件"下创建此生成事件。

相关内容

最新更新