2011-05-27 87 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