在我目前的项目中,我试图包含一个内部pod,其中包含两个子规格 - 一个用于常规应用,一个用于今天的小部件扩展。不幸的是,Cocoapods(1.2.1)错误地推断了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
不幸的是,两者都无济于事。设置仍然固执地为YES。我的机智在这里结束了。我能尝试什么吗?
答案 0 :(得分:0)
自我回答:我仍然不知道如何强制设置,但问题实际上是在我们的(多层)依赖关系图中。应用程序和应用程序扩展目标都使用了依赖的子规范,因此强制该子目标目标的编译器标志。
我通过添加另一个子规定来修复它,以便应用程序和扩展程序不共享pod目标。