ios - Include Pod's Bridging-Header to Build Settings of Project's Target? -


i created objective-c pod 2 files:

source/someviewcontroller.h source/someviewcontroller.m 

i created bridging header in pod:

source/bridging-header.h 

with content:

#import "someviewcontroller.h" 

my podspec looks this:

pod::spec.new |s|   s.name = 'testlib'   s.version = '0.0.1'   s.license = 'mit'   s.ios.deployment_target = '7.0'    s.source_files = 'source/*.{h,m}'   s.requires_arc = true   s.xcconfig = { 'swift_objc_bridging_header' => 'source/bridging-header.h' }  end  

i created demo project did pod init , inserted pod. after pod install following output:

installing testlib 0.0.1 (was 0.0.1) generating pods project integrating client project

[!] `testlibproject [debug]` target overrides `swift_objc_bridging_header` build setting defined in `pods/target support files/pods-testlibproject/pods-testlibproject.debug.xcconfig'. can lead problems cocoapods installation     - use `$(inherited)` flag, or     - remove build settings target.  [!] `testlibproject [release]` target overrides `swift_objc_bridging_header` build setting defined in `pods/target support files/pods-testlibproject/pods-testlibproject.release.xcconfig'. can lead problems cocoapods installation     - use `$(inherited)` flag, or     - remove build settings target. 

when open testlibproject.xcworkspace file see pod installed correctly bridging header pod not installed correctly. swift project tried do:

let vc: someviewcontroller 

this gives error because bridging header pod ist not installed.

how have configure podspec in order bridging header of pod being installed correctly?

podspecs build frameworks, , frameworks cannot include bridging headers. if want import non-modular code swift framework, you'll need use custom module map, instead, e.g. @ mylib/module.modulemap:

framework module mylib {     umbrella header "mylib.h"      // load sdk header, e.g. commoncrypto.h     header "/applications/xcode.app/contents/developer/platforms/iphoneos.platform/developer/sdks/iphoneos.sdk/usr/include/commoncrypto/commoncrypto.h"      export *     module * { export * } } 

once there, can specify custom module map both in xcode project (either modulemap_file setting in .xcconfig file, or module map file of target's build settings.

now, final piece of puzzle: podspec. need set module_map:

pod::spec.new |s|   # …   s.module_map = 'mylib/module.modulemap' end 

the above how sqlite.swift distributes itself, both general framework , pod.


edit: seems missed point of original question, clarified in thread. op wanted use pod framework's bridging header automatically load installing project's swift code. isn't possible. if swift frameworks did support bridging headers, able load objective-c/c code (i.e. private framework code) framework's swift code.


Comments

Popular posts from this blog

python - TypeError: start must be a integer -

c# - DevExpress RepositoryItemComboBox BackColor property ignored -

django - Creating multiple model instances in DRF3 -