可能重复:
How do I embed Mercurial tags into my C/C++ code?写作版本信息为注释块
我可以添加版本控制信息从水银进入第一个注释块在.c和.h文件的回购正在追踪?
我相信它会涉及添加一些东西到Makefile文件,以便在源文件中注释行被取代为最新版本信息
我已经尽量了在使用#define通过从每个编译编译器(如GCC-D),并增加了以下我的Makefile:
HGVERSION:= $(shell hg parents --template 'hgid: {node|short}')
CFLAGS += -g -Wall -DHGVERSION="\"${HGVERSION}\""
不过虽然这使得现有的预处理器变量给我,我不知道这有助于将一些文本注释块。
为了详细说明,我可以看到如何使用HGVERSION来实现一个标志来获得exe来打印它的版本信息,但我看不到如何将该信息放入源的实际文本中文件
详细说明,我可以看到我可以如何使用HGVERSION来实现某种程序版本信息,例如用-ver标志或类似的东西运行exe文件时打印版本,但不是如何以某种方式将该信息导入实际的源文件文本
我想最终得到类似于我的每一个src文件的顶部:
/* some comments
*
* version x.y.z
*/
我是在正确的轨道上还是在这里需要的其他技术?
我不确定它是一个确切的副本(我在我的研究中发现了与Mercurial wiki相同的链接)。我试图将它写入源文件中的注释块,而不是以编程方式使用它,即不是作为C语句中使用的#define值。 – bph 2012-01-13 12:00:01
检查[Keyword](http://mercurial.selenic.com/wiki/KeywordExtension)扩展名。但也读[为什么你不需要它](http://mercurial.selenic.com/wiki/KeywordPlan#head-2007fad6f31bf6f1f1b5c3d5b02e5c6225de3ec5)。 – 2012-01-13 12:08:19
@JoachimPileborg我一直认为,直到昨天,当我意识到我们可能有一个用例,其中一个客户在任何克隆回购之外获得一些头文件(他们只是得到一堆文件),因为它们没有被重新编译或做任何事情发展。在这种情况下,它将会有用(作为腰带和大括号的方法),以便能够将他们所拥有的文件链接到我们的回购中的更新。当然,我们应该记录下我们的运送时间和时间,但正如我所说的那样,皮带和大括号 – bph 2012-01-13 12:16:29