【发布时间】:2012-11-01 20:49:02
【问题描述】:
我有一个 Jenkins 奴隶构建单个 xcode 项目,工作完美。
但是,我有一个带有工作区的项目,其中一些 3rd 方文件设置在工作区的根目录中,并使用 gitmodule 然后导入到项目as described here 中。
当 Jenkins 编译并到达 AppDelegate.h 时,它会在尝试从库中导入文件时抛出错误。
fatal error: 'RestKit/Restkit.h' file not found #import <RestKit/Restkit.h>
我通过指向工作区来编译项目。但是,它现在在到达包装阶段时会失败。我没有看到工作区中创建的构建目录。
** BUILD SUCCEEDED **
Cannot remove *.ipa files from a non-existing directory:
/Users/leon/Work/projects/wearehive/flatstr/build/Flatstr/dev/jenkins/workspace/Snug-debuOLD/build/Debug-iphoneos
Packaging IPA
FATAL: null
java.lang.NullPointerException
at au.com.rayh.XCodeBuilder.perform(XCodeBuilder.java:421)
at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:19)
at hudson.model.AbstractBuild$AbstractRunner.perform(AbstractBuild.java:705)
at hudson.model.Build$RunnerImpl.build(Build.java:178)
at hudson.model.Build$RunnerImpl.doRun(Build.java:139)
at hudson.model.AbstractBuild$AbstractRunner.run(AbstractBuild.java:475)
at hudson.model.Run.run(Run.java:1434)
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
at hudson.model.ResourceController.execute(ResourceController.java:88)
at hudson.model.Executor.run(Executor.java:239)
【问题讨论】:
-
您是否正确指定了在哪里查找标题?换句话说,您在日志中的
-I选项是什么? -
请您详细说明一下。我不确定你的意思。
-
XCode 调用一个编译器(我相信它是 gcc)来编译你的文件。当编译器调用回显到控制台时,它包含的选项之一是告诉它在哪里查找导入/包含的标头。我认为该选项是
-I(类似于 C/C++ '传统')。请检查该选项的内容 - 它应该包含您的 3rdparty 目录,以便包含工作。我怀疑它引用不正确。 -
我可以在控制台中看到正确的路径。
-
OK,(1)是绝对路径还是相对路径?更好的是,它到底说了什么? (2) 检查代码是否真的在工作区中找到。
标签: xcode continuous-integration jenkins continuous-deployment