Version.h 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. //
  2. // "$Id: Version.h 55347 2012-03-22 11:26:45Z qin_fenglin $"
  3. //
  4. // Copyright (c)1992-2011, ZheJiang Dahua Technology Stock CO.LTD.
  5. // All Rights Reserved.
  6. //
  7. // Description:
  8. // Revisions: Year-Month-Day SVN-Author Modification
  9. //
  10. #ifndef __INFRA3_VERSION_H__
  11. #define __INFRA3_VERSION_H__
  12. #include "Infra/Defs.h"
  13. #include "Infra/Time.h"
  14. namespace Dahua {
  15. namespace Infra {
  16. /// \brief 版本类
  17. ///
  18. /// 版本管理采用统一的类CVersion,每个组件都应该定义各自的版本结构对象,并提供
  19. /// 访问接口。组件集成的时候得到所有组件的版本信息并打印出来,与组件配套表对应,
  20. /// 避免版本不匹配的组件被一起使用。每个组件也应该根据修改提供正确的版本信息。
  21. /// 版本对象最简单的使用方法,就是在组件集成时,打印出所有组件的版本信息:
  22. /// \code
  23. /// int main(int argc, char * argv[])
  24. /// {
  25. /// CVersion appVersion("Application", 1, 0, 0, "$Rev: 23572 $", __DATE__);
  26. /// appVersion.dump();
  27. /// ......
  28. /// }
  29. /// \endcode
  30. class INFRA_API CVersion
  31. {
  32. public:
  33. char name[32]; ///< 组件名称
  34. int major; ///< 主版本号,架构变动时增加
  35. int minor; ///< 次版本号,接口变化或严重缺陷修正时增加
  36. int revision; ///< 修订版本号,缺陷修正时增加
  37. int svn; ///< svn版本号,记录上述3版本号变更时对应的svn版本号
  38. SystemTime date; ///< 编译日期,使用__DATE__宏
  39. static SystemTime appDate; ///< 应用程序编译日期
  40. /// 构造函数,版本对象一般作为全局对象构造
  41. CVersion(const char* name, int major, int minor, int revision, const char* svnString, const char* dateString);
  42. /// 版本信息打印
  43. void print() const;
  44. /// 设置应用程序编译日期,应在Main函数体中设置,设置后才可获取
  45. static void setAppDate(const char* dateString);
  46. };
  47. } // namespace Infra
  48. } // namespace Dahua
  49. #endif //__INFRA_VERSION_H__