【问题标题】:xcodebuild: simulator or device?xcodebuild:模拟器还是设备?
【发布时间】:2011-02-15 22:03:48
【问题描述】:

如何向xcodebuild(命令行工具)指定我要为模拟器还是设备构建?

【问题讨论】:

  • 实际上可执行文件是完全不同的,在为 sim 构建时,您正在为 x86 和在设备上为 ARM 编译。

标签: iphone xcode ios xcodebuild


【解决方案1】:

从命令行构建的 Xcode 如下所示:

xcodebuild -configuration ${BUILD_TYPE} -target ${TARGET_NAME} -arch ${CPU_ARCHITECTURE} -sdk ${SIMULATOR_OR_IOS_SDK} 

BUILD_TYPE 类似于“Release”或“Debug”(这些是默认值,您可能已将其他人添加到项目中)

TARGET_NAME 是您正在构建的目标的名称(默认与您的项目名称相同)

CPU_ARCHITECTURE 是您正在为其构建的 CPU,其中之一:

i386armv6armv7

使用 i386 进行模拟器构建,并使用 armv6 或 armv7 进行设备构建 - 请注意,其他一些设备无法运行 armv7 代码,因此通常在构建库时,最好构建所有这些架构,然后使用以下方法将它们粘合在一起lipo.

SIMULATOR_OR_IOS_SDK 是您要查找的内容,它是 iphoneosiphonesimulator。这些值使用已安装的 Xcode 支持的最新版本的 SDK,您可以通过以下方式获取支持的 SDK 列表:

xcodebuild -showsdks

返回如下列表:

Mac OS X SDKs:
    Current Mac OS                  -sdk 
    Mac OS X 10.6                   -sdk macosx10.6

iOS SDKs:
    iOS 4.2                         -sdk iphoneos4.2

iOS Simulator SDKs:
    Simulator - iOS 3.2             -sdk iphonesimulator3.2
    Simulator - iOS 4.0             -sdk iphonesimulator4.0
    Simulator - iOS 4.1             -sdk iphonesimulator4.1
    Simulator - iOS 4.2             -sdk iphonesimulator4.2

xcodebuild 有比这更多的标志,但这些是您在使用 Xcode 设置构建属性后通常使用的标志。您不必全部使用它们,但最好清楚您正在构建的内容 - 否则我相信您最后的设置会被使用。

【讨论】:

  • 我知道-configuration-target,我只是忘记了硬件与模拟器是由SDK 设置的。谢谢!
  • 您可能还想提及-sdk iphoneos 以获得最新版本。
  • 谢谢,我知道 XCode 有一个“最新版本”的 SDK 设置,但我不知道它是什么。我假设“iphonesimulator”也是最新的 iPhone 模拟器版本。
  • 修改答案以默认使用最新版本变体。
  • 注意要使用-sdk iphonesimulator 构建,我还必须使用-arch i386,因为xcodebuild 在某些llvm 命令中出错。
【解决方案2】:

我发现-xcconfig 标志非常有用。此选项允许您指定 xcconfig(构建设置文件)的路径。在 xcconfig 中,您可以#include 其他 xcconfig 文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-11
    • 1970-01-01
    • 1970-01-01
    • 2012-05-08
    • 1970-01-01
    相关资源
    最近更新 更多