2016-08-11 56 views
1

我有一個iOS項目,它不在XCode 8中編譯。如果我修復了編譯問題,它不在XCode 7中工作。 但是我需要使項目在XCode 7和8,所以我試圖用預處理宏做條件編譯Xcode 8 XCODE_VERSION_MAJOR宏 - 編譯問題

我已經定義在Xcode預處理宏段宏像下面

XCODE_VERS=$(XCODE_VERSION_MAJOR) 

我的代碼檢查版本像belo w^

#if XCODE_VERS == "0700" 
@interface SampleTableCell : UITableViewCell 
#else 
@interface SampleTableCell : UITableViewCell<CAAnimationDelegate> 
#endif 

在Xcode中8,XCODE_VERSION_MAJOR被翻譯到0800這不是有效的八進制數。 它工作在Xcode 7罰款,但在XCode中8,我得到下面的編譯錯誤

Compilation Error

是否有任何變通使用XCODE_VERSION_MAJOR宏的Xcode 8

+0

看起來好像你想檢查你正在編譯哪個SDK。你有沒有考慮過使用已經可用的預處理器宏?例如。 http://stackoverflow.com/questions/19789958/ – Mats

+0

謝謝,而不是Xcode版本,因爲你建議我可以使用iOS的基本SDK(__IPHONE_OS_VERSION_MAX_ALLOWED),以避免編譯問題。但XCODE版本相關的構建變量不能從Xcode 8開始使用。我已向蘋果提交了一個錯誤報告。你能回答你的評論嗎? – jpsasi

回答

1

編制問題通過使用解決__IPHONE_OS_VERSION_MAX_ALLOWED宏而不是XCODE_VERSION_MAJOR建立屬性。

目前該項目是在Xcode 7和Xcode中都可用8

由於XCODER_VERSION_MAJOR和幾個屬性存儲Xcode的版本保持無效的八進制數,所以這些屬性將變得不可用在Xcode 8 。bug已經創造了相同的。