使用xcodebuild构build超时等待<IDEWorkspace,0x2004cebc0> /“runContextManager.runContexts”

我设置我的iPhone项目与哈德森运行,我的构build脚本本地正常工作,但是当我的雪豹服务器上执行以下命令的Mac

xcodebuild -sdk iphoneos4.3 -workspace Moments.xcworkspace/ -scheme Moments -configuration DistributionTest 

我收到以下错误消息。

从命令行构build设置:SDKROOT = iphoneos4.3

2011-05-11 10:32:17.729 xcodebuild [4151:903]警告:超时等待/"runContextManager.runContexts“(10.010780秒过去了)xcodebuild:错误:工作区'Moments.xcworkspace /'不包含scheme命名为“时刻”。

什么是暂停?! 为什么找不到名为Moments的scheme呢? 如果我打开构build服务器上的xcode工作区,我可以看到该计划。

检查“pipe理scheme”对话框中的“共享”框将scheme移动到Project.xcodeproj / xcshareddata / xcschemes / Scheme.xcscheme

所以即使你有一个从来没有通过Xcode用户界面打开的干净的结帐,这将工作。 我们使用这个,所以buildbot可以build立我们的应用程序

不幸的是,xcodebuild依赖于XCode生成的每个用户文件。 要解决这个问题,你可以用你的hudson用户login并运行一次XCode UI。 这将创build必要的文件。

我目前正试图解决这个问题,但在构build之前将所需的文件复制到源代码树中。

如果你运行xcodebuild并且XCode在后台运行,xcodebuild会联系XCode获取所需的数据。 由于XCode没有运行,你会得到超时。

scheme默认不在用户(和你的构build服务器)之间共享。 正如David所说,你可以共享它们,但是你也可以直接调用共享目标。

所以,而不是

 xcodebuild -scheme Foobar 

会的

 xcodebuild -target Foobar 

因为scheme通常与目标相同。