Cocoapods:无法设置 pod 构建设置

Posted

技术标签:

【中文标题】Cocoapods:无法设置 pod 构建设置【英文标题】:Cocoapods: unable to set pod build setting 【发布时间】:2017-05-10 18:37:38 【问题描述】:

在我当前的项目中,我正在尝试包含一个具有两个子规范的内部 pod - 一个用于常规应用程序,一个用于今天的小部件扩展。不幸的是,Cocoapods (1.2.1) 错误地推断了 pod 目标的构建标志。两个目标(扩展 pod 目标和普通应用程序 pod 目标)都将“仅需要 App-Extension-Safe API”设置为 YES,从而产生 -fapplication-extension CLANG 编译器标志。遗憾的是,此配置中没有构建一个目标。

手动将标志设置为 NO 可以解决问题,但仅在下一次 pod 更新之前。具体来说,这是我要解决的设置:

我什至不确定 Cocoapods 使用什么启发式来推断是否需要打开或关闭它,但有没有办法明确设置目标构建设置?我试过了

s.subspec 'Core' do |core|
  core.dependency 'xxxxxxx','~> 1.0.1'
  core.source_files = 'Pod/Sources/**/*.h,m,mm'
  core.ios.xcconfig          = 
     'CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES' => 'YES',
     'APPLICATION_EXTENSION_API_ONLY' => 'NO'
   
   core.tvos.xcconfig = 
     'GCC_PREPROCESSOR_DEFINITIONS' => 'TVOS=1',
     'CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES' => 'YES'
   
end

s.subspec 'Core' do |core|
  core.dependency 'xxxxxxx','~> 1.0.1'
  core.source_files = 'Pod/Sources/**/*.h,m,mm'
  core.pod_target_xcconfig =  'APPLICATION_EXTENSION_API_ONLY' => 'NO' 
  core.ios.xcconfig          = 
     'CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES' => 'YES',
   
   core.tvos.xcconfig = 
     'GCC_PREPROCESSOR_DEFINITIONS' => 'TVOS=1',
     'CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES' => 'YES'
   
end

不幸的是,两者都无济于事。该设置顽固地保持在“是”。我在这里束手无策。有什么我可以尝试的吗?

【问题讨论】:

【参考方案1】:

自我回答:我仍然不知道如何强制设置,但问题实际上出在我们的(多层)依赖图中。应用程序和应用程序扩展目标都使用了依赖的子规范,因此强制该子规范目标的编译器标志。

我通过添加另一个子规范来修复它,这样 pod 目标就不会被应用和扩展共享。

【讨论】:

以上是关于Cocoapods:无法设置 pod 构建设置的主要内容,如果未能解决你的问题,请参考以下文章

使用 CocoaPods 安装的框架的构建设置中的空 Info.plist 路径

为 CocoaPods 的 pod 设置部署目标

pod setup 在“设置 CocoaPods 主仓库”时失败

Xcode/Cocoapods 为啥我不能从 Pod 实现 Swift 协议?

无法通过 CocoaPods 构建 React Native 0.61.1

Cocoapods 出现问题,在安装 pod 时显示错误“无法确定 URL 的 repo 类型”