JamPlus manual
|
The iOS module contains special build rules to create a C/C++/Objective C/Objective C++ iOS application from start to finish.
The ios
module will automatically detect the appropriate compilers and set up some architecture-specific items.
Next, some combination of the following rule calls (and any others described below) are needed to build a full iOS .ipa for installation and distribution.
An iOS build is initiated with a C.TOOLCHAIN
of ios/CONFIG
. This will build the application bundle, but it will not build the .ipa
.
To bundle up an .ipa
, build the archive:TARGET
target.
To install the .ipa
, build the install:TARGET
target. Be sure to have the ideviceinstaller.exe
binaries in bin/PLATFORM/libimobiledevice/
.
For the given project TARGET
, assign the framework search DIRECTORIES
to the current toolchain.
TARGET | The target to assign the link DIRECTORIES to. TARGET is optional if rule ActiveTarget TARGET has been specified. If TARGET is * , the framework search directories are made available globally. |
DIRECTORIES | The list of framework search directories to apply. Absolute paths are used directly. Relative paths are local to . That is, they are relative to the subdirectory specified via SubDir. |
Links TARGET
against the FRAMEWORKS
specified. No dependencies are set, so changes to the framework will not be relinked.
TARGET | The target to link LIBRARIES to. TARGET is optional if rule ActiveTarget TARGET has been specified. |
FRAMEWORKS | The list of frameworks to link. The frameworks are specified without an extension. |
Weak links TARGET
against the FRAMEWORKS
specified. No dependencies are set, so changes to the framework will not be relinked.
TARGET | The target to link LIBRARIES to. TARGET is optional if rule ActiveTarget TARGET has been specified. |
FRAMEWORKS | The list of frameworks to link. The frameworks are specified without an extension. |
In order to output a final .ipa
to be installed on an iOS device, ios.Archive
must be called for the TARGET
.
TARGET | The target to convert to an .ipa . TARGET is optional if rule ActiveTarget TARGET has been specified. |
OUTPUT_PATH | The final resting place of the .ipa . |
ITUNES_ARTWORK | The path to a .jpg to be used as the icon within iTunes. |
OPTIONS | The list of options applied when building the .ipa . |
install
- Installs the .ipa on the USB-connected iOS device. Requireslibimobiledevice
installed installed within thejamplus/bin/libimobiledevice
directory.run
- Installs and runs the application on the USB-connected iOS device. Requireslibimobiledevice
installed within thejamplus/bin/libimobiledevice
directory.
Takes a provided asset catalog and builds it into its individual components. ios.AssetCatalog
currently handles .appiconset
, .imageset
, and .launchimage
directories.
TARGET | The target to build the asset catalog for. TARGET is optional if rule ActiveTarget TARGET has been specified. |
ASSET_CATALOG_PATH | The path to the .xcassets directory containing the asset catalog components. |
DESTINATION_PATH | (optional) The output directory for the generated assets. Defaults to the bundle path. |
In order to output an application bundle, the ios.Bundle
rule must be called. If TOOLCHAINS
is specified, those requested toolchain link targets are run through C.ios.Lipo
, and all necessary components are bundled together.
ios.Bundle
should be the last rule called in a sequence of rule calls describing the build of an iOS application.
TARGET | The target to build. TARGET is optional if rule ActiveTarget TARGET has been specified. |
TOOLCHAINS | (optional) The list of toolchains used to build multiple architectures for the bundle. The default toolchain is used if none are specified. |
For the given bundle TARGET
, begin an array entry within the Info.plist
. Call rule ios.BundleInfoArrayEnd TARGET to complete the array entry.
TARGET | The bundle target to affect the Info.plist for. TARGET is optional if rule ActiveTarget TARGET has been specified. |
KEY | The key name of the array entry within the Info.plist . |
For the given bundle TARGET
, assign KEY=VALUE
as an array of booleans to the bundle's Info.plist
.
TARGET | The bundle target to affect the Info.plist for. TARGET is optional if rule ActiveTarget TARGET has been specified. |
KEY | The key portion of the key/value pair to set within the Info.plist . |
VALUE | The boolean array value portion of the key/value pair to set within the Info.plist . |
NO_OVERRIDE | Pass 1 or true to not affect an already existing entry. |
For the given bundle TARGET
, begin a array dict entry within the Info.plist
. Call rule C.ios.BundleInfoArrayDictEnd TARGET to complete the dict entry.
TARGET | The bundle target to affect the Info.plist for. TARGET is optional if rule ActiveTarget TARGET has been specified. |
For the given bundle TARGET
, end the current array entry begun with rule ios.BundleInfoArrayDictBegin TARGET within the Info.plist
.
TARGET | The bundle target to affect the Info.plist for. TARGET is optional if rule ActiveTarget TARGET has been specified. |
For the given bundle TARGET
, end the current array entry begun with rule ios.BundleInfoArrayBegin TARGET : KEY within the Info.plist
.
TARGET | The bundle target to affect the Info.plist for. TARGET is optional if rule ActiveTarget TARGET has been specified. |
For the given bundle TARGET
, assign KEY=VALUE
as an array of integers to the bundle's Info.plist
.
TARGET | The bundle target to affect the Info.plist for. TARGET is optional if rule ActiveTarget TARGET has been specified. |
KEY | The key portion of the key/value pair to set within the Info.plist . |
VALUE | The integer array value portion of the key/value pair to set within the Info.plist . |
NO_OVERRIDE | Pass 1 or true to not affect an already existing entry. |
For the given bundle TARGET
, assign KEY=VALUE
as an array of strings to the bundle's Info.plist
.
TARGET | The bundle target to affect the Info.plist for. TARGET is optional if rule ActiveTarget TARGET has been specified. |
KEY | The key portion of the key/value pair to set within the Info.plist . |
VALUE | The string array value portion of the key/value pair to set within the Info.plist . |
NO_OVERRIDE | Pass 1 or true to not affect an already existing entry. |
For the given bundle TARGET
, assign KEY=VALUE
as a boolean type to the bundle's Info.plist
.
TARGET | The bundle target to affect the Info.plist for. TARGET is optional if rule ActiveTarget TARGET has been specified. |
KEY | The key portion of the key/value pair to set within the Info.plist . |
VALUE | The value portion of the key/value pair to set within the Info.plist . |
NO_OVERRIDE | Pass 1 or true to not affect an already existing entry. |
For the given bundle TARGET
, begin a dict entry within the Info.plist
. Call rule ios.BundleInfoDictEnd TARGET to complete the dict entry.
TARGET | The bundle target to affect the Info.plist for. TARGET is optional if rule ActiveTarget TARGET has been specified. |
KEY | The key name of the dict entry within the Info.plist . |
For the given bundle TARGET
, end the current dict entry begun with rule ios.BundleInfoDictBegin TARGET : KEY within the Info.plist
.
TARGET | The bundle target to affect the Info.plist for. TARGET is optional if rule ActiveTarget TARGET has been specified. |
For the given bundle TARGET
, assign KEY=VALUE
as an integer type to the bundle's Info.plist
.
TARGET | The bundle target to affect the Info.plist for. TARGET is optional if rule ActiveTarget TARGET has been specified. |
KEY | The key portion of the key/value pair to set within the Info.plist . |
VALUE | The value portion of the key/value pair to set within the Info.plist . |
NO_OVERRIDE | Pass 1 or true to not affect an already existing entry. |
For the given bundle TARGET
, assign KEY=VALUE
as string type to the bundle's Info.plist
.
TARGET | The bundle target to affect the Info.plist for. TARGET is optional if rule ActiveTarget TARGET has been specified. |
KEY | The key portion of the key/value pair to set within the Info.plist . |
VALUE | The value portion of the key/value pair to set within the Info.plist . |
NO_OVERRIDE | Pass 1 or true to not affect an already existing entry. |
For the given bundle TARGET
, assign KEY=VALUE
as an array of strings to the bundle's Info.plist
.
TARGET | The bundle target to affect the Info.plist for. TARGET is optional if rule ActiveTarget TARGET has been specified. |
KEY | The key portion of the key/value pair to set within the Info.plist . |
VALUE | The value portion of the key/value pair to set within the Info.plist . |
NO_OVERRIDE | Pass 1 or true to not affect an already existing entry. |
info
- Runs:ios.BundleInfoString : CFBundleGetInfoString : ;
iconfile
- Runs:ios.BundleInfoString : CFBundleIconFile : ;
iconfiles
- Runs:ios.BundleInfoArrayString : CFBundleIconFiles : ;
longversion
- Runs:ios.BundleInfoString : CFBundleLongVersionString : ;
bundlename
- Runs:ios.BundleInfoString : CFBundleName : ;
displayname
- Runs:ios.BundleInfoString : CFBundleDisplayName : ;
executable
- Runs:ios.BundleInfoString : CFBundleExecutable : ;
identifier
- Runs:ios.BundleInfoString : CFBundleIdentifier : ;
shortversion
- Runs:ios.BundleInfoString : CFShortVersionString : ;
bundleversion
- Runs:ios.BundleInfoString : CFBundleVersion : ;
copyright
- Runs:ios.BundleInfoString : NSHumanReadableCopyright : ;
mainnibfile
- Runs:ios.BundleInfoString : NSMainNibFile : ;
supportedplatforms
- Runs:ios.BundleInfoArrayString : CFBundleSupportedPlatforms : ;
minimumosversion
- Runs:ios.BundleInfoString : MinimumOSVersion : ;
uidevicefamily
-VALUE
may beipad
oriphone
. Runs:ios.BundleInfoArrayInteger : UIDeviceFamily : ;
uiprerenderedicon
- Runs:ios.BundleInfoBoolean : UIPrerenderedIcon : ;
uistatusbarhidden
- Runs:ios.BundleInfoBoolean : UIStatusBarHidden : ;
uiviewcontrollerbasedstatusbarappearance
- Runs:ios.BundleInfoBoolean : UIViewControllerBasedStatusBarAppearance : ;
uiinterfaceorientation
-VALUE
may beportrait
,portraitupsidedown
,landscapeleft
,landscaperight
. Runs:ios.BundleInfoString : UIInterfaceOrientation : ;
uisupportedinterfaceorientations
-VALUE
may beportrait
,portraitupsidedown
,landscapeleft
,landscaperight
. Runs:ios.BundleInfoString : UISupportedInterfaceOrientations : ;
For the given bundle TARGET
, set the output location for the bundle via BUNDLE_PATH
.
TARGET | The target to set the bundle path against. TARGET is optional if rule ActiveTarget TARGET has been specified. |
BUNDLE_PATH | The output path for the bundle. If the path is absolute, it is used as is. If it is relative, the path will be rooted against $(SUBDIR) . |
For TARGET
, use the provided SIGNING_IDENTITY
and CERTIFICATE_CHAIN
to sign the application bundle.
TARGET | The target to code sign. TARGET is optional if rule ActiveTarget TARGET has been specified. |
SIGNING_IDENTITY | The name on the certificate. |
CERTIFICATE_CHAIN | This is only used with the iOS Build Environment for Windows. Generally, it is best to just use: "ios_development.cer:AppleIncRootCertificate.cer:AppleWWDRCA.cer:my_key.key:" |
For the given bundle TARGET
, return the output location for the bundle.
TARGET | The target to retrieve the bundle path for. TARGET is optional if rule ActiveTarget TARGET has been specified. |
For the given bundle TARGET
, return the actual dependency graph target name of the bundle.
TARGET | The bundle target to affect the Info.plist for. TARGET is optional if rule ActiveTarget TARGET has been specified. |
For the given bundle TARGET
, use the Info.plist
file found at SOURCE
. Run it through the rule C.ConfigureFile TARGET : DESTINATION : SOURCE : OPTIONS rule to expand any variables. Use the result in the TARGET
bundle.
TARGET | The bundle target to configure the Info.plist for. TARGET is optional if rule ActiveTarget TARGET has been specified. |
SOURCE | The source Info.plist file. |
For the given TARGET
, take the LINK_TARGETS
, run lipo, and output the end result at OUTPUT_PATH
.
This rule does not need to be called if using rule ios.Bundle TARGET [ : TOOLCHAINS ].
TARGET | The target to perform the Lipo operation on. TARGET is optional if rule ActiveTarget TARGET has been specified. |
LINK_TARGETS | A list of link targets returned from rule C.Application TARGET : SOURCES [ : OPTIONS ], rule C.Library TARGET : SOURCES [ : OPTIONS ], or rule C.GetLinkTargets TARGET : TOOLCHAIN_SPEC. |
OUTPUT_PATH | The output location for the Lipo'ed target. |
For the given bundle TARGET
, merge the Info.plist
-style file found at SOURCE
into the main Info.plist
.
TARGET | The bundle target to affect the Info.plist for. TARGET is optional if rule ActiveTarget TARGET has been specified. |
SOURCE | The source file to merge into the current generated Info.plist . |
Sets the minimum iOS version for the TARGET
.
TARGET | The target to assign a minimum OS version to. TARGET is optional if rule ActiveTarget TARGET has been specified. |
SDK_VERSION_MIN | The minimum OS version allowable in the format major.minor . |
For TARGET
, uses the specified .mobileprovision
file at FILENAME
as the bundle's embedded.mobileprovision
.
TARGET | The target to use the .mobileprovision file for. TARGET is optional if rule ActiveTarget TARGET has been specified. |
FILENAME | The filename of the .mobileprovision file. If the filename is a relative path, it becomes rooted against $(SUBDIR) . |
For TARGET
, uses the specified PROFILE_ID
to look up a matching .mobileprovision
file from $(HOME)/Library/MobileDevice/Provisioning Profiles
on the Mac. This rule does not work on Windows.
In general, store your application's .mobileprovision
file with the application and use rule ios.ProvisionFile TARGET : FILENAME instead.
TARGET | The target to assign the found .mobileprovision file. TARGET is optional if rule ActiveTarget TARGET has been specified. |
PROFILE_ID | The profile name. |
Sets the iOS SDK_VERSION
for the toolchain. Call this before any other ios.*
rules.
SDK_VERSION | Defaults to 9.3 . |
Compiles a directory of storyboards.
TARGET | The target to build the storyboards for. TARGET is optional if rule ActiveTarget TARGET has been specified. |
LANGUAGE_DIRECTORY | The path to the (generally) Base.lproj directory containing the .storyboard files. |
STORYBOARD_FILES | (optional) The names of the launch image storyboard and the main storyboard, generally LaunchImage and Main . Automatically adds them to the Info.plist . |
After ios.Archive
, launch a secure webserver for TARGET
to install the .ipa
onto the device.
TARGET | The target to launch a webserver for. TARGET is optional if rule ActiveTarget TARGET has been specified. |