首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自动生成ID

自动生成ID
EN

Stack Overflow用户
提问于 2009-01-02 15:22:05
回答 6查看 2.3K关注 0票数 6

我们正在寻找一种方法,在我们的构建中自动包含某种类型的构建ID。这需要可移植(VC++、Linux和Mac上的g++ )和自动化。VC++是最重要的,因为在其他环境中,我们使用定制的Python脚本,这样我就可以做我想做的任何事情。

我们使用SVN,所以我们考虑使用svnversion的输出将修订写到头并包含它。这是有问题的:如果我们将文件放入SVN中,它每次都会显示为修改,但它将是多余的提交,并且在某种意义上会产生一个不断增加的修订的无限循环。如果我们不将文件放在SVN中并将其创建为预构建步骤,那么源就不会完成,因为它们需要预构建步骤或Makefile来生成该文件。

我们也可以使用__DATE__,但我们不能保证使用__DATE__的文件(即将其写入日志文件)将被编译,如果其他文件被修改--除非我们“触摸”它,但是我们会导致项目总是过时。我们可以将其作为预构建步骤进行操作,因此只有当项目的其余部分过期时才会对其进行触摸,因此不会导致虚假的编译,但是如果VC++在预构建步骤之前计算依赖项,这将无法工作( __DATE__的文件不会被编译)。

有什么有趣的想法吗?

EN

回答 6

Stack Overflow用户

发布于 2009-01-02 15:30:02

我们使用svnversion的输出,将其写入头文件并包括在内。我们省略了存储库中的文件,并在构建前的步骤中创建它;这对我们非常有效。(我不知道你为什么反对使用预构建步骤?)

我们目前正在使用Perl脚本将svnversion的输出转换为头文件;后来我发现TortoiseSVN包含一个subwcrev命令(该命令也已移植到Linux),可以完成大部分相同的任务。

票数 9
EN

Stack Overflow用户

发布于 2009-01-02 15:34:57

如果您不喜欢构建所需的不包含在源代码管理中的包含文件的想法,请考虑一个批处理文件或其他构建步骤,该步骤以编程方式创建一个文件/ include,并在您的构建过程中调用svnversion。

基本上生成文件,这样您就不会有一个非版本化和必需的文件。

编辑乔希的潜台词可能是最好的主意。

在实现之前,我编写了自己的hacky工具来做同样的事情--在模板文件中进行替换。

票数 4
EN

Stack Overflow用户

发布于 2009-01-02 15:36:12

它可以很简单,如:

代码语言:javascript
复制
% make -DBUILD_NUMBER=`svnlook youngest /path/to/repo`
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/407074

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档