C++ 在Visual Studio 2008中将生成编号/生成ID嵌入到项目中

C++ 在Visual Studio 2008中将生成编号/生成ID嵌入到项目中,c++,c,visual-studio-2008,build,build-process,C++,C,Visual Studio 2008,Build,Build Process,有几次我的测试人员对我的项目的旧版本进行测试,然后报告修复的bug感到困惑 如何将生成ID嵌入到项目中?当前构建时间,或者简单地从1开始并在每次构建程序时递增,都可以工作。然后在游戏UI中,将打印版本号,以便测试人员使用的软件版本不存在歧义 我在谷歌上搜索了一下答案,并在IRC上提问,但我发现的一切似乎都只与C#有关 有什么想法吗?在Unix上,我只需修改Makefile,并让某个oneliner将所需的值插入源代码中 现在我最好的想法是弄清楚VS构建过程是如何工作的,然后编写一个python脚

有几次我的测试人员对我的项目的旧版本进行测试,然后报告修复的bug感到困惑

如何将生成ID嵌入到项目中?当前构建时间,或者简单地从1开始并在每次构建程序时递增,都可以工作。然后在游戏UI中,将打印版本号,以便测试人员使用的软件版本不存在歧义

我在谷歌上搜索了一下答案,并在IRC上提问,但我发现的一切似乎都只与C#有关

有什么想法吗?在Unix上,我只需修改Makefile,并让某个oneliner将所需的值插入源代码中


现在我最好的想法是弄清楚VS构建过程是如何工作的,然后编写一个python脚本首先运行并编辑源代码以更新构建编号

为了解决同样的问题,我编写了一个小实用程序,它在
#define
中生成一个包含日期/时间戳的头文件。它作为预构建步骤运行,主项目包括生成的标题。然后,您可以在横幅上的标志或类似内容中包含邮票


在我的项目中,我还生成了一个版本资源,然后将其移动到一个.rc2文件(手动编写的资源)中,并对其进行修改,以包含生成的标题并适当地更新版本。

好的,这是我的快速、肮脏和丑陋的解决方案

我有一个buildid.txt文件,这是一个文本文件,buildid只有一个整数值

我有increment-buildid.bat

@echo off
for /f %%a in (buildid.txt) do (
  echo %%a
  set /a num=%%a
)
echo %num%
set /a num += 1
echo %num% > buildid.txt
echo int buildid = %num%; > buildid.c
要处理VisualStudio生成过程,请右键单击解决方案资源管理器中的“解决方案”->“属性”->“生成事件”->“预生成事件”

现在我知道了如何做到这一点,我可以将我的zip+scp脚本放入构建后事件中,以便即时上传!(不确定是否堵塞,必须对其进行测试)

编辑:上传确实被阻止了。也就是说,直到上传完成,调试才会开始。我只是有另一批上传使用scp,因为我觉得需要。双击它,它将被发送到远程服务器