如何使用xcodebuild构建特定的体系结构?

pqn*_*net 21 macos command-line xcodebuild xcode4

我有遗留代码依赖于指针,32-bit并希望xCodeBuild用来构建代码command line.由于某种原因,这不起作用.这是我使用的命令:

xcodebuild -configuration Debug -arch i386 
  -workspace MyProject.xcworkspace -scheme MyLib
Run Code Online (Sandbox Code Playgroud)

这是我得到的输出

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

显然,它试图建立x86_64的代码,并惨遭失败,因为我只启用i386VALID_ARCHSXcode中的项目设置.

有没有办法让它理解我不想要一个64-bit图书馆?

Lau*_*ble 46

如果要使用参数ONLY_ACTIVE_ARCH,NO则必须设置为.通过传递这些参数,您可以强制使用正确的体系结构.xcodebuildARCHS

xcodebuild ARCHS=i386 ONLY_ACTIVE_ARCH=NO -configuration Debug -workspace MyProject.xcworkspace -scheme MyLib
Run Code Online (Sandbox Code Playgroud)

请参阅此参考以获取详细信

  • 你可以使用`xcodebuild VALID_ARCHS = i386 CURRENT_ARCH = i386 ONLY_ACTIVE_ARCH = YES .... (4认同)
  • 根据提供的参考看起来像使用ONLY_ACTIVE_ARCH = YES和CURRENT_ARCH = i386应该适用于我想要做的但CURRENT_ARCH(或具有相同含义的NATIVE_ARCH)但显然这两个变量不能被覆盖(似乎没有任何建议来自文件).提出的方法确实有效(实际上,一旦你理解了活动arch是构建系统的体系结构而不是你在Xcode中选择的体系结构,它就有意义了)但是对于该定义可能有更好的选择.谢谢! (3认同)
  • 只需添加ONLY_ACTIVE_ARCH = NO就可以了 (2认同)
  • 对于64位模拟器/ os:ARCHS ='x86_64'VALID_ARCHS ='x86_64' (2认同)