2014-10-08 52 views
6

我正在使用xcodebuild命令生成动态框架。为了使它与iPhone 5s模拟器兼容,我需要使用x86_64架构来构建它。但它并没有构建框架。Xcodebuild没有生成x86_64架构的动态框架

我正在使用下面的命令。

xcodebuild -project $PROJECT_PATH -configuration 'Release' -sdk 'iphonesimulator7.0' clean build ARCHS='x86_64' VALID_ARCHS='x86_64' IPHONEOS_DEPLOYMENT_TARGET='7.0' TARGET_BUILD_DIR="$BUILD_DIR/build-x86_64" BUILT_PRODUCTS_DIR="BUILD_DIR/build-x86_64" 

请帮助...

+0

无法在XCode中生成它? – wshcdr 2014-10-08 07:28:48

+0

框架项目是否在Build阶段中列为依赖项? Xcode会隐式地解析依赖关系,但命令行不会。 – borrrden 2014-10-08 07:29:32

+0

它是在我使用xcode时生成的,但不是通过xcodebuild命令生成的。 – 2014-10-08 07:32:05

回答

0

谢谢您的回答..

我刚刚发现iphonesimulator7.0 SDK是不是我的机器上安装,因此在构建失败。

我将其更改为iphonesimulator及其工作。

0

这可能是您缺少-target "MyTarget"参数。默认情况下,如果您未通过此参数,xcodebuild将构建项目中列出的第一个目标。您希望的目标是项目中的第一个目标吗?

您可以尝试的另一种选择是使用经过验证的方法来构建适用于iOS的通用框架。我已经使用了这里描述的方法以及许多完美结果的框架:https://github.com/jverkoey/iOS-Framework。我不是这种方法的开发者。

没有发布任何错误消息,甚至不知道如何知道它是失败的,很难给你更多的细节。它没有建立(所以你得到一个错误信息)?它是否因为在最终框架中看不到x86_64体系结构而失败?

0

尝试像这样的参数列表 xcodebuild manual link

-destination "platform=iOS Simulator,OS=8.0,name=iPhone 6" 

这就是显示一个项目

xcodebuild [-project projectname] -scheme schemename [-destination destinationspecifier] 
      [-destination-timeout value] [-configuration configurationname] 
      [-sdk [sdkfullpath | sdkname]] [buildaction ...] [setting=value ...] 
      [-userdefault=value ...] 

(我根据你上面的背景下作出这样的假设)在其中一个示例中,您还可以列出多个目的地。

xcodebuild -workspace MyWorkspace.xcworkspace -scheme MyScheme -destination 'platform=iOS 
      Simulator,name=iPhone' -destination 'platform=iOS,name=My iPad' test 

我个人在使用工作区的项目中,所以必须列出一个方案。

我注意到你正在设置TARGET_BUILD_DIR和BUILD_PRODUCTS。我设置了OBJROOT和SYMROOT,并且目录与我使用Xcode GUI时的目录相同。

上次来这里是利用目的地标志

BUILDDIR="<path/to/build/directory>" 
xcodebuild -workspace "<path/to/workspace/>my.xcworkspace" -scheme "NameOfMySchemeToBuild" -destination "platform=iOS Simulator,OS=8.0,name=iPhone 6" -configuration "Release" OBJROOT=$BUILDDIR SYMROOT=$BUILDDIR 

希望这有助于一个真实的例子!