2014-10-08 51 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 

希望這有助於一個真實的例子!