1

我正在尝试按时间和日期创建自动增量构建版本

我无法在#define 中添加日期和时间

版本.h 文件

#define STRINGIZE2(s) #s
#define STRINGIZE(s) STRINGIZE2(s)


#define VERSION_MAJOR     5
#define VERSION_MINOR     0
#define VERSION_REVISION  2
#define VERSION_BUILD     1

#define PRODUCTVER         VERSION_MAJOR, VERSION_MINOR, VERSION_REVISION, VERSION_BUILD
#define STRFILEVER        STRINGIZE(VERSION_MAJOR)  "." STRINGIZE(VERSION_MINOR) "." STRINGIZE(VERSION_REVISION) "." STRINGIZE(VERSION_BUILD) 

.rc 文件

VS_VERSION_INFO VERSIONINFO
 FILEVERSION PRODUCTVER
 PRODUCTVERSION PRODUCTVER

            VALUE "FileVersion", STRFILEVER
            VALUE "ProductVersion", STRFILEVER

我试过了

#define VERSION_MAJOR     __DATE__
#define VERSION_MINOR      __TIME__
#define VERSION_REVISION  2
#define VERSION_BUILD     1

我也尝试了其他方法,比如

time_t now;
struct tm *current;
now = time(0);
current = localtime(&now);
    #define VERSION_MAJOR    current->tm_wday
    #define VERSION_MINOR      current->tm_hour
    #define VERSION_REVISION  2
#define VERSION_BUILD     1 

没有成功

我只是想在定义中添加日期和时间

我希望有一个解决方案

谢谢你

4

1 回答 1

1

给定下面的示例,我们有一个构建脚本修改版本文本中的值。

static const char   version_text[] = "519";
char const *
Version_Get_Text(void)
{
    return version_text;
}

unsigned int
Version_Text_Length(void)
{
    return sizeof(version_text) - 1U;
}

不需要凌乱的#define宏。这些函数还保留了运行时和类型安全:当版本更改时,访问这些函数的所有文件都不需要重新构建;只有这个模块。

这项技术与我们的自动构建服务器相结合,到目前为止已经持续了一年,没有出现任何问题。

此外,不需要优化。访问版本不是我们产品核心操作的一部分;它仅在初始化期间首次显示调试提示或用户发送命令询问版本时发生。在这些情况下,执行时间并不重要。

于 2013-04-18T20:04:07.730 回答