2011-05-27 82 views
18

我有遺留代碼,依靠指針32-bit,並且想要使用xCodeBuildcommand line構建該代碼。由於某種原因,這不起作用。下面是我用命令:如何使用xcodebuild構建特定體系結構?

xcodebuild -configuration Debug -arch i386 
    -workspace MyProject.xcworkspace -scheme MyLib 

這裏的輸出我得到

[BEROR]No architectures to compile for 
    (ONLY_ACTIVE_ARCH=YES, active arch=x86_64, VALID_ARCHS=i386). 

顯然它試圖建立x86_64代碼和失敗的很慘,因爲我只在Xcode項目設置中啓用i386VALID_ARCHS

有沒有辦法讓它理解我不想要64-bit庫?

回答

41

如果您想讓xcodebuild使用ARCHS參數,則必須將ONLY_ACTIVE_ARCH設置爲NO。通過傳遞這些參數,您可以強制適當的架構。

xcodebuild ARCHS=i386 ONLY_ACTIVE_ARCH=NO -configuration Debug -workspace MyProject.xcworkspace -scheme MyLib 

有關詳細信息,請參閱this reference

+3

根據所提供的參考看起來像使用ONLY_ACTIVE_ARCH = YES和CURRENT_ARCH = i386應該爲我想要做的工作,但CURRENT_ARCH(或具有相同含義的NATIVE_ARCH),但顯然這兩個變量不能被覆蓋(並且似乎沒有從文檔中建議它)。建議的方法確實有效(事實上,一旦你瞭解了主動架構是構建系統的架構,而不是你在Xcode中選擇的架構),但是對於該定義而言,更好的選擇可能會有所幫助。謝謝! – pqnet 2011-05-30 09:29:47

+4

你可以用'xcodebuild聯編VALID_ARCHS = i386的CURRENT_ARCH = i386的ONLY_ACTIVE_ARCH = YES ....' – 2013-02-26 15:17:55

+2

只是增加ONLY_ACTIVE_ARCH = NO爲我做 – 2013-08-23 07:32:50