Jenkins xcode插件 - 如何解决库搜索路径问题?

时间:2012-11-14 03:26:41

标签: xcode jenkins continuous-integration restkit continuous-deployment

我在我正在尝试设置的jenkins xcode构建中遇到此错误:

clang: error: no such file or directory: '/Users/boo/.jenkins/jobs/myProject/workspace/DerivedData/Release-iphoneos/libIBAForms.a'
clang: error: no such file or directory: '/Users/boo/.jenkins/jobs/myProject/workspace/DerivedData/Release-iphoneos/libLambdaAlert.a'
clang: error: no such file or directory: '/Users/boo/.jenkins/jobs/myProject/workspace/DerivedData/Release-iphoneos/libRestKit.a'

我无法弄清楚有关配置的一些事情:

  1. 是什么促使jenkins-xcode-plugin(https://wiki.jenkins-ci.org/display/JENKINS/Xcode+Plugin)在路径中使用/DerivedData/Release-iphoneos/来查找.a文件

  2. 相反,为什么不选择/DerivedData/Debug-iphoneos/作为查找.a文件的路径中的片段

  3. 最后生成的子模块 - libIBAForms,libLambdaAlert,libRestKit - 都是具有releasedebug配置文件的项目...那么为什么文件实际上从{ {1}}它们应该是...的路径超出了我的范围。

2 个答案:

答案 0 :(得分:1)

关于第1点和第2点,这是基于XCode插件(和Xcode本身)的配置参数配置的。默认情况下,插件使用参数的“Release”值。如果你想使用“Debug”,你应该这样设置它。

不知道对#3

说些什么

就个人而言,我发现Xcode插件具有限制性,并没有为我提供所需的选项。我正在使用xcode附带的命令行工具(通过常规执行Shell 构建步骤)

// Below are my build parameters for the job through regular means
CONFIGURATION=Debug
CODE_SIGN_IDENTITY=iPhone Developer: <DeveloperNameHere>
PROVISIONING_PROFILE=3000000B-7000-4000-9CD5-D0000B0F0000
//

// Code for Execute Shell
xcodebuild -verbose -alltargets -configuration ${CONFIGURATION} clean build CODE_SIGN_IDENTITY="${CODE_SIGN_IDENTITY}" PROVISIONING_PROFILE=${PROVISIONING_PROFILE}
&&
/usr/bin/xcrun -sdk iphoneos PackageApplication -v "${WORKSPACE}/path_here/${CONFIGURATION}-iphoneos/application.app" -o "${WORKSPACE}/path_here/${CONFIGURATION}-iphoneos/application.ipa" --sign "${CODE_SIGN_IDENTITY}" --embed "/Users/<youruser>/Library/MobileDevice/Provisioning Profiles/${PROVISIONING_PROFILE}.mobileprovision"

通常为作业设置参数
xcodebuild命令执行实际构建 xcrun命令将应用程序打包到IPA(Xcode中的存档步骤),对其进行签名,并将配置文件直接嵌入到IPA中。

请注意,其中一些开关是选项,可能不是您需要的。但这是通过命令行完成的好处:您可以完全控制您想要做的事情

小记:确保在第二个命令上提供-v-o开关的完整路径

答案 1 :(得分:0)

当我使用生成libIBAForms和libLambdaAlert的子模块作为主要项目的“目标依赖关系”时,我能够克服这一切