【发布时间】:2012-04-13 15:10:49
【问题描述】:
如何在 C 源代码或 Makefile 中包含我的项目的 SVN 版本(不是文件版本)?
【问题讨论】:
如何在 C 源代码或 Makefile 中包含我的项目的 SVN 版本(不是文件版本)?
【问题讨论】:
我们在 makefile 中使用这样的一行:
REPO_REV := $(shell svnversion -n)
将工作副本的修订号存储到 make 变量中。要在 C 代码中使用它,您可以让您的 makefile 使用该值在编译器命令行上定义一个宏(类似于 gcc 的 -DREPO_REV=$(REPO_REV))。
【讨论】:
来自SVN book:
新用户经常对
$Rev$关键字的工作方式感到困惑。由于存储库有一个单一的、全局递增的修订号,许多人认为 $Rev$ 关键字的值反映了这个数字。但是$Rev$会展开以显示文件更改的最后一个修订版,而不是文件更新到的最后一个修订版。理解这一点可以消除困惑,但常常会感到沮丧——如果没有 Subversion 关键字的支持,您如何自动将全局修订号放入您的文件中?为此,您需要外部处理。 Subversion 附带了一个名为
svnversion的工具,它就是为此目的而设计的。它会抓取您的工作副本并生成它找到的修订作为输出。您可以使用这个程序,加上一些额外的工具,将修订信息嵌入到您的文件中。有关svnversion的更多信息,请参阅第 9 章,Subversion 完整参考中名为 “svnversion—Subversion Working Copy Version Info” 的部分。
【讨论】: