2010-05-04 90 views
9

我一直被委託在一個具有一些令人困惑的屬性的項目上工作。Xcode中特定文件的特定編譯器標誌

該項目的性質是它不會編譯爲iPhone模擬器和iPhone設備使用相同的編譯設置。我認爲這取決於目標平臺,需要針對x86或arm6/7專門編譯。

因此,在Xcode的Build Settings視圖中查看時,項目的構建設置不支持我爲每個特定文件設置特定的編譯器標誌。然而,在這個項目的原開發人員已經以某種方式宣佈該行:

CE7FEB5710F09234004DE356 /* MyFile.m in Sources */ = {isa = PBXBuildFile; fileRef = CE7FEB5510F09234004DE356 /* MyFile.m */; settings = {COMPILER_FLAGS = "-fasm-blocks -marm -mfpu=neon"; }; }; 

有沒有辦法做到這一點,而無需手動編輯項目文件?我知道編輯項目文件可能導致完全打破它,所以我寧願不這樣做,因爲我顯然不像以前的開發人員那樣知道。

所以要澄清的問題是:對於模擬器編譯時,除非我刪除-fasm-blocks標誌

構建失敗。編譯設備時生成失敗,除非我添加-fasm-blocks標誌。有沒有辦法爲每個文件設置此標誌而無需手動編輯項目文件?

+0

您可以使用'#if!TARGET_IPHONE_SIMULATOR'過濾asm代碼。 – kennytm 2010-05-04 11:18:23

回答

7

您可以定義單個源文件的編譯參數如下:

  • 第一選擇目標,你要建立
  • 右擊源文件
  • 選擇「獲取信息」
  • 點擊「生成」選項卡上
  • 定義其它編譯器選項

但是,在你的情況下,這聽起來像是一個更好的解決方案,只是複製目標並有兩個目標 - 一個用於實際設備,另一個用於模擬器。繼承項目級別的常見構建設置,並根據需要調整每個目標構建設置。

+0

謝謝! 所以這可能會回答我要問的另一個問題,那就是如何自動化編譯標誌? 我可以設置一個運行腳本階段,該階段在編譯源階段之前運行,並根據目標平臺環境變量的輸出設置編譯器標誌環境變量的值。 編譯器平臺只需要在一個特定的文件上設置,所以我認爲設置兩個目標並創建一個項目範圍的編譯器標誌可能是矯枉過正的... – Jasarien 2010-05-04 11:28:22

2

爲特定文件調用GetInfo,您可以爲此文件設置「生成」設置。另請參閱XCode項目管理指南。

6

This博客文章由Joshua Nozzi介紹瞭如何在Xcode 4,他說這樣做:

...選擇在Project Navigator項目,選擇相應的目標(您可能只有一個),然後選擇Build Phases選項卡。擴展編譯源階段和中提琴! 「編譯器標誌」列可讓您爲該目標設置每個文件的標誌。

相關問題