Xcode 似乎通過配置“構建”了編輯器警告和錯誤,這與當前方案不同,因此不會選擇我在 xcconfig 檔案中定義的前處理器宏。
我使用一個 Standard.xcconfig 檔案,在其中定義了一個前處理器宏,如下所示:
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) X_MY_FLAG=1
我添加了新配置“除錯標準”和“發布標準”,在其中我為專案(或目標)選擇了標準配置。
我添加了一個新方案,它使用配置的“...標準”變體,并在 Xcode 頂行的下拉串列中選擇它。
在main.m
我使用這個片段來測驗宏:
#if X_MY_FLAG == 1
#warning "Success. X_MY_FLAG picked up."
#else
#error "X_MY_FLAG not picked up"
#endif
運行構建(Cmd-B)會產生一個很好的構建輸出,并且正如預期的那樣出現警告訊息,而不是錯誤。但是,在編輯器視窗中,我也得到了顯示的錯誤資訊。(見下面的截圖。)看到這兩種#if
被評估的情況不是我想在這里看到的。
因此,對于編輯器,Xcode 運行一個“構建”,它不使用所選方案中指定的配置。有沒有人有提示,如何解決這個問題或實際的潛在問題是什么?
uj5u.com熱心網友回復:
Xcode 編輯器似乎總是為“配置”串列中的某些“默認”配置評估宏運算式。因此,如果您為任何其他配置指定了配置集檔案,則它不是編輯器視窗所反映的(在這種情況下Debug
,配置編輯器會決議前處理器):
這很愚蠢,但您似乎無法更改編輯器視窗的這種“默認”配置,并且它在后臺所做的只是使用未知標準對它們進行排序。
我假設Xcode 僅在Debug
可用時進行配置,或者按字母順序對串列進行排序,否則從排序的配置串列中獲取第一個,因此重命名Debug
為Webug
例如,使其成為編輯器視窗評估宏的最不優選的候選者:
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/506896.html
上一篇:Swift在框架中使用AppDelegate的自定義變數
下一篇:比較物件陣列的元素