我希望将内部版本号指定为我的(C ++)项目版本信息的一部分。我想要g ++或者Eclipse来调用一些外部脚本(如果我选择在发布时将其修复),则调用BUILD_NUMBER,然后在我的代码中选择BUILD_NUMBER作为#defined值。这可能吗?我该怎么办?请注意,我希望此值更受限制,可能是C ++变量。在我们将构建声明为beta之前,它将是一个变量。然后它会锁定。
作为替代方案,我可以使用SVN版本号。 Eclipse可以将它放入环境var或#define -d值?
我已经浏览了谷歌和Eclipse论坛,并找到了许多与我用来提出这个问题时共享相同搜索词的条目。没有任何关于主题的内容出现了。
答案 0 :(得分:3)
Eclipse会调用您的makefile,默认情况下通常使用'all'目标(您可以更改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头文件。
答案 1 :(得分:1)
您可以使用$Revision$ Subversion keyword(并相应地设置svn:keywords)来获取插入/更新的文件的最新修订版本。
但是,如果您需要整个“项目”(目录)的修订号,则需要按照here in the FAQ所述进行操作。
答案 2 :(得分: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放在路径上的某个位置。