簡體   English   中英

預處理器時間戳

[英]Preprocessor Timestamp

是否可以通過預處理器宏生成嵌入式 Unix 時間戳?

例如: #define VERSION_EXPIRE __TIMESTAMP__

這樣做的原因是,我有 beta 版本,我想在編譯時生成一個過期時間戳(在特殊的構建配置中)。

我已經解決了它如下:

#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];
}

如果您使用svngit類的版本控制軟件,您可能會自動替換$Id: $$Date: $類的字符串,其中包含特定版本的文件 (svn) 或“HEAD”版本的 id 或日期(吉特)。

編輯:對於git您可以提取源

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

要在該過程中替換某些字符串,您必須在.gitattributes中告訴 git 您想要替換的內容:

file*   export-subst

關於 "$...$" 之間的 what 和 how 術語的語法,請參考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"

在使用 sed 將__TIMESTAMP__替換為date預處理之前添加自定義構建步驟。 最簡單的方法是告訴 Xcode 使用 makefile

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM