Binding Native Frameworks
Sometimes a native library is distributed as a framework. Objective Sharpie provides a convenience feature for binding properly defined frameworks through the -framework
option.
For example, binding the Adobe Creative SDK Framework for iOS is straightforward:
$ sharpie bind \
-framework ./AdobeCreativeSDKFoundation.framework \
-sdk iphoneos8.1
In some cases, a framework will specify an Info.plist which indicates against which SDK the framework should be compiled. If this information exists and no explicit -sdk
option is passed, Objective Sharpie will infer it from the framework's Info.plist (either the DTSDKName
key or a combination of the DTPlatformName
and DTPlatformVersion
keys).
The -framework
option does not allow explicit header files to be passed. The umbrella header file is chosen by convention based on the framework name. If an umbrella header cannot be found, Objective Sharpie will not attempt to bind the framework and you must manually perform the binding by providing the correct umbrella header file(s) to parse, along with any framework arguments for clang (such as the -F
framework search path option).
Under the hood, specifying -framework
is just a shortcut. The following
bind arguments are identical to the -framework
shorthand above.
Of special importance is the -F .
framework search path provided to clang
(note the space and period, which are required as part of the command).
$ sharpie bind \
-sdk iphoneos8.1 \
./AdobeCreativeSDKFoundation.framework/Headers/AdobeCreativeSDKFoundation.h \
-scope AdobeCreativeSDKFoundation.framework/Headers \
-c -F .