有一个 svn 存储库。我不时抛出一个项目并对其发表评论。有什么办法可以获取提交号并将其显示在程序中?
例如,该文件versionsvn.h是这样的:
#ifndef __VERSIONSVN_H_
#define __VERSIONSVN_H_
#define SVN_REVISION (/*тут не знаю что!!!*/)
#endif // __VERSIONSVN_H_
UDP:@Chorkov 的版本有效。
UDP:没有额外的宏,你可以这样做:
DEFINES += SVN_REVISION=\\\"$$system(svnversion -n)\\\"
这里需要考虑到项目可能由几个部分组成,项目中包含的不同文件可能属于不同的仓库、不同的分支、有不同的版本。您可以合理地限制自己,例如,通过控制项目文件所在文件夹或某些特定文件的版本号。
如果使用 qmake 作为构建系统,则在项目代码中添加以下行:
在这里,我们在当前文件夹(包含 *.pro 文件)上调用 svnversion 命令。同样,你可以为 cmake 写一行。
作为一个陷阱:如果在命令行上找不到 svnversion,编译错误消息将无法阅读。
在 C++ 方面,宏不仅可以转换为数字文字,还可以转换为类型文字,
1234M即1234:1236M将此宏视为 C++ 端的数字是错误的。要将宏视为字符串,您需要将文字转换为字符串。这可以相对地使用boost.org 库中的标准BOOST_PP_STRINGIZE宏来完成,或者手动完成: