自从更新到Xcode10和Swift 4.2以来,我总是在pod中收到此构建时间警告。我该怎么做才能删除此警告?
我试图删除派生数据,清理并构建项目,但是它不起作用:(
我发现有人在这里https://github.com/Alamofire/Alamofire/issues/2624提出了相同的问题,乔恩·谢尔(Jon Shier)给出了答案,但是在删除以前的xcworkspace和更新cocoapods之后,我仍然无法解决该问题,我尚未实现更改“生成位置相关的可执行文件”设置,因为我找不到它。如果您能找到此问题的解决方案,请分享:)
答案 0 :(得分:7)
将“生成与位置相关的代码”设置为“是”似乎不正确。位置无关的是首选。框架和库之类的非应用程序目标始终始终与位置无关,因此发出警告。
显示的警告是链接器消息,@ Marcpek屏幕快照中的其他设置似乎更合适:“链接>生成位置相关的可执行文件”。快速帮助显示这是LD_NO_PIE
设置。
即使这从操作系统默认值继承了No
,我仍然尝试在我的CocoaPod目标中再次将其设置为No,并且似乎可以解决链接器警告。
您所做的任何项目设置都将在下次运行pod install
时丢失,因此请编辑Podfile以使更改永久生效。将config.build_settings['LD_NO_PIE'] = 'NO'
添加到安装后阶段:
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['LD_NO_PIE'] = 'NO'
end
end
end
答案 1 :(得分:2)
最终对我有用的是为Pods项目启用与位置相关的代码。我曾尝试从Pod禁用警告,并清除(而不是启用) Generate Position-Dependent Code (生成位置相关代码)设置,但这确实没有用。
在打开以下代码后,启用位置相关的代码(并因此删除-pie,即 P 位置 I I 独立于 C ode)。 xcworkspace,转到Pods项目构建设置(整个Pods
项目的设置,请参见屏幕截图),搜索position
并设置 Generate Position-Dependent Code 生成设置到是。
答案 2 :(得分:2)
一种选择是切换到将吊舱链接为静态库而不是框架。如果Swift不支持静态库,则需要use_frameworks!
,但是现在它已经支持了,您可以从Podfile pod install
中删除该行,警告应该消失了。
有关use_frameworks
的历史的更多信息:https://stackoverflow.com/a/49469205/8831
答案 3 :(得分:0)
我已通过设置Build Settings -> Packaging -> Convert Copied Files = yes
答案 4 :(得分:-2)