如何在eclipse中将环境变量用作#defines

时间:2012-08-27 12:47:05

标签: svn g++ environment-variables c-preprocessor

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

作为替代方案,我可以使用SVN版本号。 Eclipse可以将它放入环境var或#define -d值?

我已经浏览了谷歌和Eclipse论坛,并找到了许多与我用来提出这个问题时共享相同搜索词的条目。没有任何关于主题的内容出现了。

3 个答案:

答案 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放在路径上的某个位置。