预处理器时间戳

是否可以通过预处理器宏生成嵌入式Unix时间戳?预处理器时间戳

例如:#define VERSION_EXPIRE __TIMESTAMP__

这样做的原因是,我有测试版,我想生成编译期的到期时间戳(在一个特殊的生成配置)。

回答:

我如下解决它:

#define VERSION_TIMESTAMP __DATE__" "__TIME__"\x0" 

在其他一些类

+ (NSDate *)versionExpiresInDays:(NSUInteger)days { 

NSString *dateString = [NSString stringWithUTF8String:VERSION_TIMESTAMP];

NSLocale *enLocale = [[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"] autorelease];

NSDate *compiledOn = [NSDate dateWithNaturalLanguageString:dateString locale:enLocale];

return [compiledOn dateByAddingTimeInterval:days*24*60*60];

}

回答:

在使用sed替换__TIMESTAMP__并使用date进行预处理之前添加一个自定义构建步骤。最简单的方法是tell Xcode to use a makefile。

回答:

如果您想使用版本的软件,如svngit你可能有一个像$Id: $自动替换字符串的或$Date: $由特定版本的文件(svn)或“HEAD”版本(git)的id或日期。

编辑:为git,你可以提取来源

git archive --format=zip -9 -o project.zip HEAD file1 file2... 

在这段过程中,你必须告诉蠢货,.gitattributes,你想拥有的东西替换某些字符串取代:

file* export-subst 

有关“$ ... $”之间的术语和术语的语法,请参阅手册页git-log中的格式。正如例子我在我的代码

#define P99_VERSION_DATE "$Format:%cd$" 

#define P99_VERSION_ID "$Format:%H$"

其中在文件的分发版本是

#define P99_VERSION_DATE "Thu Oct 7 23:38:43 2010 +0200" 

#define P99_VERSION_ID "6f9740a6808ff50f42d24bb7b5234a904f84e6fe"

以上是 预处理器时间戳 的全部内容, 来源链接: utcz.com/qa/257487.html

回到顶部