For some platforms (currently only used on Cocoa), an EBuild project or target has the concept of building for separate "Build Destinations".
Different than Targets (which build a conceptually diferent set of files and settings, usually to target differen platforms), Build Destinations build the same project, with the same settings, with the goal of running or deploying to a different device type.
When building a project (or target), it can potentially be built for a single, multiple, or all available build destinations. The available build destinations are platform-specific and hard-coded into the EBuild build chain; unlike Targets (or Configurations) they cannot be extended or individually named.
Cocoa projects know the following three build destinations:
This is the default build destination, and will build an iOS, tvOS or watchOS project to run on a physical device, or a macOS application to run on the Mac. It will build the architecture(s) configured via the "
Architecture" project setting.
For macOS applications, this is the only available build destination.
This build destination will build an iOS, tvOS or watchOS project to run in the Simulator on the Mac. It will build the architecture(s) configured via the "
SimulatorArchitecture" project setting.
Finally, this build destination will build an iOS project to run nativekly onn the Mac via Mac Catalyst. It will build the architecture(s) configured via the "
MacCatalystArchitecture" project setting.
This build destination is available only for iOS projects, and only if the
SupportMacCatalyst Project Settings is enabled.
Determining What to Build
When working ion Fire, Water or Visual Studio, the IDE will automatically as to build the right build destination based on the currently selected device in the CrossBox device picker. It does this by passing the appropriate setting to EBuild internally.
In Fire ands Water a rebuild (⌘⇧R / Ctrl+Shift+R) will always build all (available) build destinations.
From the command line, you can enable or disable build destinations by passing a setting with the name of the build destination, and a value of
Note that by default EBuild will build only the "Device" build destination, but if you specify a one or more diffrent destinations, "Device" will only build if it among thiose specified. e.g.:
ebuild– will build for Device.
ebuild --setting:Device=true– will also build for Device.
ebuild --setting:Simulator=true– will only build for Simulator.
ebuild --setting:Simulator=true --setting:Device=true– will build both.