在Jenkins上使用xcodebuild尝试使用Cocoapods构建应用程序的链接错误

时间:2013-08-05 11:32:49

标签: xcode jenkins cocoapods

我正在尝试为我们的应用开发项目设置Jenkins CI实例。我有工作,使用 Debug 配置运行逻辑和应用程序测试,但我正在努力构建IPA,因为我在编译期间遇到链接错误。

ld: library not found for -lPods
clang: error: linker command failed with exit code 1 (use -v to see invocation)

该应用程序使用Cocoapods,我正在使用Jenkins XCode插件构建。

我搜索了类似的问题并尝试/验证了一堆东西:

  • 我正在使用工作区。
  • 我在xcodebuild步骤之前运行pod install
  • 我已经检查了项目本身的架构,目标和Pod是相同的 - 标准(armv7,armv7s) - 正如this answer
  • 所建议的那样
  • 我尝试了this GitHub thread
  • 的各种解决方案
  • 我根据this answer和类似的
  • 尝试了派生数据位置的各种设置
  • Podfile指定platform :ios, :deployment_target => "6.0"

在那一点上,我不知道还有什么可以尝试的。

5 个答案:

答案 0 :(得分:3)

“构建输出目录”设置也可能导致此问题。

将“构建输出目录”的值从相对路径更改为完全指定的路径,为我修复了它。

E.g。而不是'MyOutputDirectory'使用'/ Users / Shared / Jenkins / home / jobs / JenkinsProject / workspace / MyOutputDirectory'

答案 1 :(得分:2)

问题可能是因为您有不同的(自定义)构建配置。

看看这个:

https://github.com/CocoaPods/CocoaPods/issues/121

尝试将以下搜索路径添加到"图书馆搜索路径" (对于所有配置)

$(SYMROOT)/Release$(EFFECTIVE_PLATFORM_NAME)

答案 2 :(得分:0)

您可以尝试选择您的Pods项目并设置Build Settings-> Build Active Architectures Only-> NO for Release and Debug,对Pods中的每个目标重复此操作。

答案 3 :(得分:0)

我无法与XCode插件对话,所以我的回答可能会被认为有些反应迟钝,但这就是我如何使用它。

我添加了一个如下所示的构建步骤:

export DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer/
echo $WORKSPACE
cd "/Users/[jenkins-accountname]/.jenkins/jobs/[jobname]/workspace/[xcode project name]"
pod install
xcrun xcodebuild -workspace [your workspace (not project) name] -scheme [the build scheme to build] clean build -destination "platform=iOS,name=CurtsiPhone" -destination-timeout 120

-destination -destination-timeout 是成功的关键构建参数。我的项目只会在手机上构建,因为它使用专门的库,所以我的手机必须插入,以便XCode可以找到它。如果您的项目将在模拟器中构建,则可能不需要此项,但是当我明确指定目标时,我才能使用它。

如果XCode插件允许您声明额外的编译参数,您应该尝试这些。

答案 4 :(得分:-2)

如果您正在使用XCode 5,那么我认为this应该有帮助

基本上更新你的Gemfile(如果它不存在则创建一个)并添加:

gem 'cocoapods', :git => 'http://github.com/CocoaPods/CocoaPods', :branch => 'xcode-5-support'
gem 'xcodeproj', :git => 'http://github.com/CocoaPods/Xcodeproj', :branch => 'redacted-support'

如果你的Podfile中有config.build_settings['ARCHS'] = 'armv7'这样的东西,不要忘记摆脱它,你也需要有armv7s。

希望这会有所帮助,因为它为我节省了几天的噩梦。