在一个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
在项目配置中的"配置属性"/"生成事件"下创建此生成事件。