1

我希望分配一个内部版本号作为我的(C++)项目版本信息的一部分。我希望 g++ 或 Eclipse 调用一些会增加(或者如果我选择在发布时将其固定不变)BUILD_NUMBER 的外部脚本,然后在我的代码中选择 BUILD_NUMBER 作为#defined 值。这可能吗?我该怎么做?请注意,我希望这个值受到更多限制,可能是 C++ 变量。在我们将构建声明为 beta 之前,它将是一个变量。然后它会锁定。

作为替代方案,我可以使用 SVN 版本号。Eclipse 可以将其填充到环境变量或#define-d 值中吗?

我环顾了谷歌和 Eclipse 论坛,发现许多条目与我用来提出这个问题的搜索词相同。没有什么话题出现。

4

3 回答 3

3

Eclipse 调用您的 makefile,通常默认使用“全部”目标(您可以在 Projects > Properties > C++ Build > Behavior > Workbench Build Behavior 中更改目标。)

由于您的问题没有提及您的makefile,这可能是问题的关键:您需要向您的makefile 添加代码,以确保在调用g++ 之前生成内部版本号标头(要创建)。

如果你不熟悉 GNU 'make',你应该从它开始。至于从 Subversion 获取当前版本,您可以在 bash 脚本中执行此操作或制作配方:

echo "#define SVN_REV=$(svn info | grep 'Last Changed Rev:' | cut -c 17 )" > my_version_header.h

此命令首先运行'svn info',选择最后更改的修订行,修剪行的开头,并将结果写入C 头文件。

于 2012-08-27T13:01:28.767 回答
1

您可以使用$Revision$ Subversion 关键字(并适当地设置 svn:keywords)来获取插入/更新文件的最后更改修订。

但是,如果您想要整个“项目”(目录)的修订号,则需要按照FAQ 中的说明进行操作。

于 2012-08-27T13:02:04.493 回答
0

我在http://th0nt.wordpress.com/2009/05/01/use-build-variables-in-eclipse-cdt-to-simplify-setting-work/找到了满足我需求的解决方案。它的要点是将 -D VERSION_NUMBER= 添加myShellScript到 Properties->C/C++ Builds->GCC C++ Compiler->Miscellaneous 属性。将 myShellScript 放在路径上的某个位置。

于 2012-08-27T13:42:33.420 回答