Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 如何使用xcodebuild构建特定的体系结构?_Macos_Command Line_Xcode4_Xcodebuild - Fatal编程技术网

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

Macos 如何使用xcodebuild构建特定的体系结构?,macos,command-line,xcode4,xcodebuild,Macos,Command Line,Xcode4,Xcodebuild,我有一个依赖于指针为32位的遗留代码,我想使用xCodeBuild从命令行构建代码。出于某种原因,这不起作用。以下是我使用的命令: xcodebuild -configuration Debug -arch i386 -workspace MyProject.xcworkspace -scheme MyLib 这是我得到的输出 [BEROR]No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=x86_

我有一个依赖于指针为32位的遗留代码,我想使用
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\u 64
代码,但失败得很惨,因为我只在xCode项目设置中启用了
i386
from
VALID\u ARCHS


有没有办法让它明白我不想要一个
64位
库?

如果你想
xcodebuild
使用
ARCHS
参数,你必须将
ONLY\u ACTIVE\u ARCH
设置为
NO
。通过传递这些参数,您可以强制使用适当的体系结构

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

有关详细信息,请参阅。

xcodebuild ONLY\u ACTIVE\u ARCH

xcodebuild ONLY_ACTIVE_ARCH...
//or
Build Settings -> Build Active Architecture Only -> ONLY_ACTIVE_ARCH
-为连接的设备构建具有单一体系结构的二进制文件

-为特定的
-arch
有效架构
aka
有效架构
)生成二进制文件(如果指定了),或者在其他情况下为所有架构生成二进制文件

建议使用
Yes
进行调试(这样可以节省构建时间),使用No进行发布构建

注:在模拟器上运行是安全的


要检查版本,请根据提供的参考使用
lipo-info

,看起来仅使用“活动”和“当前”两个变量应该可以满足我的要求,但“当前”变量(或具有相同含义的“本机”变量)显然无法覆盖(文档中似乎没有任何提示). 建议的方法确实有效(而且,一旦您了解了ActiveArch是构建系统的体系结构,而不是您在Xcode中选择的体系结构,它实际上是有意义的),但对于该定义来说,选择一个更好的词可能会有所帮助。谢谢您可以使用
xcodebuild VALID\u ARCHS=i386 CURRENT\u ARCH=i386 ONLY\u ACTIVE\u ARCH=YES….
只需添加\u ACTIVE\u ARCH=NO即可为64位模拟器/os:ARCHS='x86\u 64'VALID\u ARCHS='x86\u 64'执行此操作的Geoptima有何作用?
ONLY\u ACTIVE\u ARCH=NO
答案是正确的,您的评论是无用的