| ## Generating bindings for Apple APIs | |
| It can be tricky to locate header files containing Apple's ObjC frameworks, and | |
| the paths can vary between computers depending on which version of Xcode you are | |
| using and where it is installed. So FFIgen provides the following variable | |
| substitutions that can be used in the `headers.entry-points` list: | |
| - `$XCODE`: Replaced with the result of `xcode-select -p`, which is the | |
| directory where Xcode's APIs are installed. | |
| - `$IOS_SDK`: Replaced with `xcrun --show-sdk-path --sdk iphoneos`, which is the | |
| directory within `$XCODE` where the iOS SDK is installed. | |
| - `$MACOS_SDK`: Replaced with `xcrun --show-sdk-path --sdk macosx`, which is the | |
| directory within `$XCODE` where the macOS SDK is installed. | |
| For example: | |
| ```Yaml | |
| headers: | |
| entry-points: | |
| - '$MACOS_SDK/System/Library/Frameworks/Foundation.framework/Headers/NSDate.h' | |
| ``` | |
| In the Dart API you can use these getters: | |
| `xcodePath`, `iosSdkPath`, and `macSdkPath`. |