2014-02-19 32 views
0

作爲構建iOS應用程序的Xcode構建階段,我使用makefile以構建其他內容作爲依賴項的負載(比設置大量我發現複雜的Xcode構建規則)。構建iOS應用程序並運行Mac生成文件時出現「不支持的體系結構」

makefile中的其中一個步驟現在包括構建一個Mac命令行應用程序,用於處理和打包應用程序的一些資產。

不幸的是,當make從Xcode運行時,一些環境變量似乎傳遞給它,所以當它試圖從外部makefile編譯Mac應用程序時,似乎認爲該架構應該是iPhone的Mac。

makefile很簡單:

APP_NAME = myAppName 
SOURCE = main.m 

$(APP_NAME): $(SOURCE) 
    cc -fobjc-arc -framework Foundation -framework Cocoa -o $(APP_NAME) $(SOURCE) 

所以,問題:

我怎麼能強迫鐺,而不是使用,這似乎是在環境中的一個原生架構?

編輯:或者:make不承擔似乎從Xcode傳遞的環境?

我所看到的:

在構建iOS應用程序,我得到錯誤的負載說:「不支持的架構」爲真正的低級別的頭文件(例如,第一個是cdefs.h)。當我仔細觀察時,很明顯它是在構建Mac工具的main.m時。在命令行上像往常一樣運行make時它的性能非常好 - 它似乎只有在通過Xcode構建時纔會遇到此問題。

+1

如果確定哪些環境變量是不好的,可以在make中重置這些變量。要查看完整的環境變量列表,您可以(從makefile中的規則中)運行'env | sort'。那麼假設你注意到一個env.var。 'MAKE_ME_AN_IPHONE = true',你可以在你的makefile文件中添加'MAKE_ME_AN_IPHONE =',或者如果你有一個GNU make的全新版本''unexport MAKE_ME_AN_IPHONE''來擺脫這個值。 – MadScientist

+0

謝謝!我的解決方案結果相似,但不完全相同...... –

回答