diff --git a/docs/CMake API.md b/docs/CMake API.md index a3d18261a2..74e465002a 100644 --- a/docs/CMake API.md +++ b/docs/CMake API.md @@ -247,341 +247,341 @@ commands, properties beginning with `JUCE_` can be _queried_, but changing their have any effect (or might even break things in unexpected ways!), so always pass JUCE target attributes directly to these creation functions, rather than adding them later. -- `PRODUCT_NAME` - - The name of the output built by this target, similar to CMake's `OUTPUT_NAME` property. If not - specified, this will default to the target name. +`PRODUCT_NAME` +- The name of the output built by this target, similar to CMake's `OUTPUT_NAME` property. If not + specified, this will default to the target name. -- `VERSION` - - A version number string in the format "major.minor.bugfix". If not specified, the `VERSION` of - the project containing the target will be used instead. On Apple platforms, this is the - user-facing version string. This option corresponds to the `CFBundleShortVersionString` field in - the target's plist. +`VERSION` +- A version number string in the format "major.minor.bugfix". If not specified, the `VERSION` of + the project containing the target will be used instead. On Apple platforms, this is the + user-facing version string. This option corresponds to the `CFBundleShortVersionString` field in + the target's plist. -- `BUILD_VERSION` - - A version number string in the format "major.minor.bugfix". If not specified, this will match - the `VERSION` of the target. On Apple platforms, this is the private version string used to - distinguish between App Store builds. This option corresponds to the `CFBundleVersion` field in - the target's plist. - -- `BUNDLE_ID` - - An identifier string in the form "com.yourcompany.productname" which should uniquely identify - this target. Mainly used for macOS builds. If not specified, a default will be generated using - the target's `COMPANY_NAME` and `PRODUCT_NAME`. - -- `MICROPHONE_PERMISSION_ENABLED` - - May be either TRUE or FALSE. Adds the appropriate entries to an app's Info.plist. - -- `MICROPHONE_PERMISSION_TEXT` - - The text your app will display when it requests microphone permissions. - -- `CAMERA_PERMISSION_ENABLED` - - May be either TRUE or FALSE. Adds the appropriate entries to an app's Info.plist. - -- `CAMERA_PERMISSION_TEXT` - - The text your app will display when it requests camera permissions. - -- `BLUETOOTH_PERMISSION_ENABLED` - - May be either TRUE or FALSE. Adds the appropriate entries to an app's Info.plist. - -- `BLUETOOTH_PERMISSION_TEXT` - - The text your app will display when it requests bluetooth permissions. - -- `SEND_APPLE_EVENTS_PERMISSION_ENABLED` - - May be either TRUE or FALSE. Enable this to allow your app to send Apple events. - -- `SEND_APPLE_EVENTS_PERMISSION_TEXT` - - The text your app will display when it requests permission to send Apple events. - -- `FILE_SHARING_ENABLED` - - May be either TRUE or FALSE. Adds the appropriate entries to an iOS app's Info.plist. - -- `DOCUMENT_BROWSER_ENABLED` - - May be either TRUE or FALSE. Adds the appropriate entries to an iOS app's Info.plist. - -- `STATUS_BAR_HIDDEN` - - May be either TRUE or FALSE. Adds the appropriate entries to an iOS app's Info.plist. - - - `REQUIRES_FULL_SCREEN` - - May be either TRUE or FALSE. Adds the appropriate entries to an iOS app's Info.plist. - -- `BACKGROUND_AUDIO_ENABLED` - - May be either TRUE or FALSE. Adds the appropriate entries to an iOS app's Info.plist. - -- `BACKGROUND_BLE_ENABLED` - - May be either TRUE or FALSE. Adds the appropriate entries to an iOS app's Info.plist. - -- `APP_GROUPS_ENABLED` - - May be either TRUE or FALSE. Adds the appropriate entries to an iOS app's entitlements. - -- `APP_GROUP_IDS` - - The app groups to which your iOS app belongs. These will be added to your app's entitlements. - -- `ICLOUD_PERMISSIONS_ENABLED` - - May be either TRUE or FALSE. Adds the appropriate entries to an iOS app's entitlements. - -- `IPHONE_SCREEN_ORIENTATIONS` - - May be one or more of `UIInterfaceOrientationUnknown`, `UIInterfaceOrientationPortrait`, - `UIInterfaceOrientationPortraitUpsideDown`, `UIInterfaceOrientationLandscapeLeft`, or - `UIInterfaceOrientationLandscapeRight`. Adds appropriate entries to an iOS app's plist. - -- `IPAD_SCREEN_ORIENTATIONS` - - May be one or more of `UIInterfaceOrientationUnknown`, `UIInterfaceOrientationPortrait`, - `UIInterfaceOrientationPortraitUpsideDown`, `UIInterfaceOrientationLandscapeLeft`, or - `UIInterfaceOrientationLandscapeRight`. Adds appropriate entries to an iOS app's plist. - -- `LAUNCH_STORYBOARD_FILE` - - A custom launch storyboard file to use on iOS. If not supplied, a default storyboard will be - used. - -- `CUSTOM_XCASSETS_FOLDER` - - A path to an xcassets directory, containing icons and/or launch images for this target. If this - is specified, the ICON_BIG and ICON_SMALL arguments will not have an effect on iOS, and a launch - storyboard will not be used. - -- `TARGETED_DEVICE_FAMILY` - - Specifies the device families on which the product must be capable of running. Allowed values - are "1", "2", and "1,2"; these correspond to "iPhone/iPod touch", "iPad", and "iPhone/iPod and - iPad" respectively. This will default to "1,2", meaning that the target will target iPhone, - iPod, and iPad. - -- `ICON_BIG`, `ICON_SMALL` - - Paths to image files that will be used to generate app icons. If only one of these parameters - is specified, then that image will be used for all icon resolutions. If both arguments are - specified, then the appropriate image will be picked for each icon resolution. - -- `COMPANY_COPYRIGHT` - - Copyright text which will be added to the app/plugin's Info.plist. The value of this argument - will be inherited from the `JUCE_COMPANY_COPYRIGHT` property, so if you want to use the same - `COMPANY_COPYRIGHT` for several targets in a build tree, you can call - `set_directory_properties(PROPERTIES JUCE_COMPANY_COPYRIGHT ...)` after including JUCE but - before adding the targets, and then omit the `COMPANY_COPYRIGHT` argument when creating the - individual targets. - -- `COMPANY_NAME` - - The name of this target's author. Will be added to the app/plugin's Info.plist, and may be used - to generate part of the `BUNDLE_ID` if no ID was given explicitly. The value of this argument - will be inherited from the `JUCE_COMPANY_NAME` property, so if you want to use the same - `COMPANY_NAME` for several targets in a build tree, you can call - `set_directory_properties(PROPERTIES JUCE_COMPANY_NAME ...)` after including JUCE but before - adding the targets, and then omit the `COMPANY_NAME` argument when creating the individual - targets. - -- `COMPANY_WEBSITE` - - The address of a website related to this target in some way. The value of this argument will be - inherited from the `JUCE_COMPANY_WEBSITE` property, so if you want to use the same - `COMPANY_WEBSITE` for several targets in a build tree, you can call - `set_directory_properties(PROPERTIES JUCE_COMPANY_WEBSITE ...)` after including JUCE but before - adding the targets, and then omit the `COMPANY_WEBSITE` argument when creating the individual - targets. - -- `COMPANY_EMAIL` - - An email address for this target's author. The value of this argument will be inherited from the - `JUCE_COMPANY_EMAIL` property, so if you want to use the same `COMPANY_EMAIL` for several - targets in a build tree, you can call `set_directory_properties(PROPERTIES JUCE_COMPANY_EMAIL - ...)` after including JUCE but before adding the targets, and then omit the `COMPANY_EMAIL` - argument when creating the individual targets. - -- `DOCUMENT_EXTENSIONS` - - File extensions that should be associated with this target. For example, the Projucer passes - the string `jucer` because it wants to open `.jucer` files. If your target has several different - document types, you can pass them as multiple arguments, e.g. `DOCUMENT_EXTENSIONS wav mp3 aif`. - -- `NEEDS_CURL` - - On Linux, JUCE may or may not need to link to Curl depending on the compile definitions that are - set on a JUCE target. By default, we don't link Curl because you might not need it, but if you - get linker or include errors that reference Curl, just set this argument to `TRUE`. - -- `NEEDS_WEB_BROWSER` - - On Linux, JUCE may or may not need to link to Webkit depending on the compile definitions that - are set on a JUCE target. By default, we don't link Webkit because you might not need it, but - if you get linker or include errors that reference Webkit, just set this argument to `TRUE`. - -- `NEEDS_STORE_KIT` - - On macOS, JUCE may or may not need to link to StoreKit depending on the compile definitions that - are set on a JUCE target. By default, we don't link StoreKit because you might not need it, but - if you get linker or include errors that reference StoreKit, just set this argument to `TRUE`. - -- `PUSH_NOTIFICATIONS_ENABLED` - - Sets app entitlements to allow push notifications. False by default. - -- `NETWORK_MULTICAST_ENABLED` - - Sets app entitlements to allow IP multicast or broadcast on macOS/iOS. False by default. - -- `HARDENED_RUNTIME_ENABLED` - - Enables macOS' hardened runtime for this target. Required for notarisation. False by default. - -- `HARDENED_RUNTIME_OPTIONS` - - A set of space-separated entitlement keys that will be added to this target's entitlements - plist if `HARDENED_RUNTIME_ENABLED` is `TRUE`. Each key should be in the form - `com.apple.security.*` where `*` is a specific entitlement. - -- `APP_SANDBOX_ENABLED` - - Enables macOS' app sandbox for this target. False by default. - -- `APP_SANDBOX_INHERIT` - - Allows child processes to inherit the static entitlements of their parent process. If this - is set to `TRUE`, no other app sandbox entitlements will be set on this target. - -- `APP_SANDBOX_OPTIONS` - - A set of space-separated entitlement keys that will be added to this target's entitlements - plist if `APP_SANDBOX_ENABLED` is `TRUE`. Each key should be in the form `com.apple.security.*` - where `*` is a specific entitlement. - -- `PLIST_TO_MERGE` - - A string to insert into an app/plugin's Info.plist. - -- `FORMATS` - - For plugin targets, specifies the plugin targets to build. Should be provided as a - space-separated list. Valid values are `Standalone Unity VST3 AU AUv3 AAX VST`. `AU` and `AUv3` - plugins will only be enabled when building on macOS. It is an error to pass `AAX` or `VST` - without first calling `juce_set_aax_sdk_path` or `juce_set_vst2_sdk_path` respectively. - -- `PLUGIN_NAME` - - The name of the plugin. In a DAW environment, this is the name that will be displayed to the - user when they go to load a plugin. This name may differ from the name of the physical plugin - file (to set the name of the plugin file, use the `PRODUCT_NAME` option). If not specified, - the `PLUGIN_NAME` will default to match the `PRODUCT_NAME`. - -- `PLUGIN_MANUFACTURER_CODE` - - A four-character unique ID for your company. For AU compatibility, this must contain at least - one upper-case letter. GarageBand 10.3 requires the first letter to be upper-case, and the - remaining letters to be lower-case. - -- `PLUGIN_CODE` - - A four-character unique ID for your plugin. For AU compatibility, this must contain exactly one - upper-case letter. GarageBand 10.3 requires the first letter to be upper-case, and the remaining - letters to be lower-case. - -- `DESCRIPTION` - - A short description of your plugin. - -- `IS_SYNTH` - - Whether the plugin is a synth. Will be used to set sensible plugin category values if they - are not provided explicitly. - -- `NEEDS_MIDI_INPUT` - - Whether the plugin should provide a midi input. - -- `NEEDS_MIDI_OUTPUT` - - Whether the plugin should provide a midi output. - -- `IS_MIDI_EFFECT` - - Whether the plugin is a MIDI effect (some hosts provide a special channel-strip location for - MIDI effect plugins). - -- `EDITOR_WANTS_KEYBOARD_FOCUS` - - Whether the plugin requires keyboard focus, or should defer all keyboard handling to the host. - -- `DISABLE_AAX_BYPASS` - - Whether the AAX bypass function should be disabled. - -- `DISABLE_AAX_MULTI_MONO` - - Whether the AAX multi mono bus layout should be disabled. - -- `AAX_IDENTIFIER` - - The bundle ID for the AAX plugin target. Matches the `BUNDLE_ID` by default. - -- `VST_NUM_MIDI_INS` - - For VST2 and VST3 plugins that accept midi, this allows you to configure the number of inputs. - -- `VST_NUM_MIDI_OUTS` - - For VST2 and VST3 plugins that produce midi, this allows you to configure the number of outputs. - -- `VST2_CATEGORY` - - Should be one of: `kPlugCategUnknown`, `kPlugCategEffect`, `kPlugCategSynth`, - `kPlugCategAnalysis`, `kPlugCategMatering`, `kPlugCategSpacializer`, `kPlugCategRoomFx`, - `kPlugSurroundFx`, `kPlugCategRestoration`, `kPlugCategOfflineProcess`, `kPlugCategShell`, - `kPlugCategGenerator`. - -- `VST3_CATEGORIES` - - Should be one or more, separated by spaces, of the following: `Fx`, `Instrument`, `Analyzer`, - `Delay`, `Distortion`, `Drum`, `Dynamics`, `EQ`, `External`, `Filter`, `Generator`, `Mastering`, - `Modulation`, `Mono`, `Network`, `NoOfflineProcess`, `OnlyOfflineProcess`, `OnlyRT`, - `Pitch Shift`, `Restoration`, `Reverb`, `Sampler`, `Spatial`, `Stereo`, `Surround`, `Synth`, - `Tools`, `Up-Downmix` - -- `AU_MAIN_TYPE` - - Should be one of: `kAudioUnitType_Effect`, `kAudioUnitType_FormatConverter`, - `kAudioUnitType_Generator`, `kAudioUnitType_MIDIProcessor`, `kAudioUnitType_Mixer`, - `kAudioUnitType_MusicDevice`, `kAudioUnitType_MusicEffect`, `kAudioUnitType_OfflineEffect`, - `kAudioUnitType_Output`, `kAudioUnitType_Panner` - -- `AU_EXPORT_PREFIX` - - A prefix for the names of entry-point functions that your component exposes. Typically this - will be a version of your plugin's name that can be used as part of a C++ token. Defaults - to your plugin's name with the suffix 'AU'. - -- `AU_SANDBOX_SAFE` - - May be either TRUE or FALSE. Adds the appropriate entries to an AU plugin's Info.plist. - -- `SUPPRESS_AU_PLIST_RESOURCE_USAGE` - - May be either TRUE or FALSE. Defaults to FALSE. Set this to TRUE to disable the `resourceUsage` - key in the target's plist. This is useful for AU plugins that must access resources which cannot - be declared in the resourceUsage block, such as UNIX domain sockets. In particular, - PACE-protected AU plugins may require this option to be enabled in order for the plugin to load - in GarageBand. - -- `AAX_CATEGORY` - - Should be one or more of: `AAX_ePlugInCategory_None`, `AAX_ePlugInCategory_EQ`, - `AAX_ePlugInCategory_Dynamics`, `AAX_ePlugInCategory_PitchShift`, `AAX_ePlugInCategory_Reverb`, - `AAX_ePlugInCategory_Delay`, `AAX_ePlugInCategory_Modulation`, `AAX_ePlugInCategory_Harmonic`, - `AAX_ePlugInCategory_NoiseReduction`, `AAX_ePlugInCategory_Dither`, - `AAX_ePlugInCategory_SoundField`, `AAX_ePlugInCategory_HWGenerators`, - `AAX_ePlugInCategory_SWGenerators`, `AAX_ePlugInCategory_WrappedPlugin`, - `AAX_ePlugInCategory_Effect` - -- `PLUGINHOST_AU` - - May be either TRUE or FALSE (defaults to FALSE). If TRUE, will add the preprocessor definition - `JUCE_PLUGINHOST_AU=1` to the new target, and will link the macOS frameworks necessary for - hosting plugins. Using this parameter should be preferred over using - `target_compile_definitions` to manually set the `JUCE_PLUGINHOST_AU` preprocessor definition. - -- `USE_LEGACY_COMPATIBILITY_PLUGIN_CODE` - - May be either TRUE or FALSE (defaults to FALSE). If TRUE, will override the value of the - preprocessor definition "JucePlugin_ManufacturerCode" with the hex equivalent of "proj". This - option exists to maintain compatiblity with a previous, buggy version of JUCE's CMake support - which mishandled the manufacturer code property. Most projects should leave this option set to - its default value. - -- `COPY_PLUGIN_AFTER_BUILD` - - Whether or not to install the plugin to the current system after building. False by default. - If you want all of the plugins in a subdirectory to be installed automatically after building, - you can set the property `JUCE_COPY_PLUGIN_AFTER_BUILD` on the directory before adding the - plugins, rather than setting this argument on each individual target. Note that on Windows, - the default install locations may not be writable by normal user accounts. - -- `VST_COPY_DIR` - - The location to which VST2 (legacy) plugins will be copied after building if - `COPY_PLUGIN_AFTER_BUILD` is set on this target. If you want to install all of the VST2 plugins - in a subdirectory to a non-default location, you can set the `JUCE_VST_COPY_DIR` property on - the directory before adding the plugin targets, rather than setting this argument on each - individual target. - -- `VST3_COPY_DIR` - - The location to which VST3 plugins will be copied after building if `COPY_PLUGIN_AFTER_BUILD` - is set on this target. If you want to install all of the VST3 plugins in a subdirectory to a - non-default location, you can set the `JUCE_VST3_COPY_DIR` property on the directory before - adding the plugin targets, rather than setting this argument on each individual target. - -- `AAX_COPY_DIR` - - The location to which AAX plugins will be copied after building if `COPY_PLUGIN_AFTER_BUILD` - is set on this target. If you want to install all of the AAX plugins in a subdirectory to a - non-default location, you can set the `JUCE_AAX_COPY_DIR` property on the directory before - adding the plugin targets, rather than setting this argument on each individual target. - -- `AU_COPY_DIR` - - The location to which AU plugins will be copied after building if `COPY_PLUGIN_AFTER_BUILD` - is set on this target. If you want to install all of the AU plugins in a subdirectory to a - non-default location, you can set the `JUCE_AU_COPY_DIR` property on the directory before - adding the plugin targets, rather than setting this argument on each individual target. - -- `UNITY_COPY_DIR` - - The location to which Unity plugins will be copied after building if `COPY_PLUGIN_AFTER_BUILD` - is set on this target. If you want to install all of the Unity plugins in a subdirectory to a - non-default location, you can set the `JUCE_UNITY_COPY_DIR` property on the directory before - adding the plugin targets, rather than setting this argument on each individual target. - Unlike the other `COPY_DIR` arguments, this argument does not have a default value so be sure - to set it if you have enabled `COPY_PLUGIN_AFTER_BUILD` and the `Unity` format. +`BUILD_VERSION` +- A version number string in the format "major.minor.bugfix". If not specified, this will match + the `VERSION` of the target. On Apple platforms, this is the private version string used to + distinguish between App Store builds. This option corresponds to the `CFBundleVersion` field in + the target's plist. + +`BUNDLE_ID` +- An identifier string in the form "com.yourcompany.productname" which should uniquely identify + this target. Mainly used for macOS builds. If not specified, a default will be generated using + the target's `COMPANY_NAME` and `PRODUCT_NAME`. + +`MICROPHONE_PERMISSION_ENABLED` +- May be either TRUE or FALSE. Adds the appropriate entries to an app's Info.plist. + +`MICROPHONE_PERMISSION_TEXT` +- The text your app will display when it requests microphone permissions. + +`CAMERA_PERMISSION_ENABLED` +- May be either TRUE or FALSE. Adds the appropriate entries to an app's Info.plist. + +`CAMERA_PERMISSION_TEXT` +- The text your app will display when it requests camera permissions. + +`BLUETOOTH_PERMISSION_ENABLED` +- May be either TRUE or FALSE. Adds the appropriate entries to an app's Info.plist. + +`BLUETOOTH_PERMISSION_TEXT` +- The text your app will display when it requests bluetooth permissions. + +`SEND_APPLE_EVENTS_PERMISSION_ENABLED` +- May be either TRUE or FALSE. Enable this to allow your app to send Apple events. + +`SEND_APPLE_EVENTS_PERMISSION_TEXT` +- The text your app will display when it requests permission to send Apple events. + +`FILE_SHARING_ENABLED` +- May be either TRUE or FALSE. Adds the appropriate entries to an iOS app's Info.plist. + +`DOCUMENT_BROWSER_ENABLED` +- May be either TRUE or FALSE. Adds the appropriate entries to an iOS app's Info.plist. + +`STATUS_BAR_HIDDEN` +- May be either TRUE or FALSE. Adds the appropriate entries to an iOS app's Info.plist. + + `REQUIRES_FULL_SCREEN` + - May be either TRUE or FALSE. Adds the appropriate entries to an iOS app's Info.plist. + +`BACKGROUND_AUDIO_ENABLED` +- May be either TRUE or FALSE. Adds the appropriate entries to an iOS app's Info.plist. + +`BACKGROUND_BLE_ENABLED` +- May be either TRUE or FALSE. Adds the appropriate entries to an iOS app's Info.plist. + +`APP_GROUPS_ENABLED` +- May be either TRUE or FALSE. Adds the appropriate entries to an iOS app's entitlements. + +`APP_GROUP_IDS` +- The app groups to which your iOS app belongs. These will be added to your app's entitlements. + +`ICLOUD_PERMISSIONS_ENABLED` +- May be either TRUE or FALSE. Adds the appropriate entries to an iOS app's entitlements. + +`IPHONE_SCREEN_ORIENTATIONS` +- May be one or more of `UIInterfaceOrientationUnknown`, `UIInterfaceOrientationPortrait`, + `UIInterfaceOrientationPortraitUpsideDown`, `UIInterfaceOrientationLandscapeLeft`, or + `UIInterfaceOrientationLandscapeRight`. Adds appropriate entries to an iOS app's plist. + +`IPAD_SCREEN_ORIENTATIONS` +- May be one or more of `UIInterfaceOrientationUnknown`, `UIInterfaceOrientationPortrait`, + `UIInterfaceOrientationPortraitUpsideDown`, `UIInterfaceOrientationLandscapeLeft`, or + `UIInterfaceOrientationLandscapeRight`. Adds appropriate entries to an iOS app's plist. + +`LAUNCH_STORYBOARD_FILE` +- A custom launch storyboard file to use on iOS. If not supplied, a default storyboard will be + used. + +`CUSTOM_XCASSETS_FOLDER` +- A path to an xcassets directory, containing icons and/or launch images for this target. If this + is specified, the ICON_BIG and ICON_SMALL arguments will not have an effect on iOS, and a launch + storyboard will not be used. + +`TARGETED_DEVICE_FAMILY` +- Specifies the device families on which the product must be capable of running. Allowed values + are "1", "2", and "1,2"; these correspond to "iPhone/iPod touch", "iPad", and "iPhone/iPod and + iPad" respectively. This will default to "1,2", meaning that the target will target iPhone, + iPod, and iPad. + +`ICON_BIG`, `ICON_SMALL` +- Paths to image files that will be used to generate app icons. If only one of these parameters + is specified, then that image will be used for all icon resolutions. If both arguments are + specified, then the appropriate image will be picked for each icon resolution. + +`COMPANY_COPYRIGHT` +- Copyright text which will be added to the app/plugin's Info.plist. The value of this argument + will be inherited from the `JUCE_COMPANY_COPYRIGHT` property, so if you want to use the same + `COMPANY_COPYRIGHT` for several targets in a build tree, you can call + `set_directory_properties(PROPERTIES JUCE_COMPANY_COPYRIGHT ...)` after including JUCE but + before adding the targets, and then omit the `COMPANY_COPYRIGHT` argument when creating the + individual targets. + +`COMPANY_NAME` +- The name of this target's author. Will be added to the app/plugin's Info.plist, and may be used + to generate part of the `BUNDLE_ID` if no ID was given explicitly. The value of this argument + will be inherited from the `JUCE_COMPANY_NAME` property, so if you want to use the same + `COMPANY_NAME` for several targets in a build tree, you can call + `set_directory_properties(PROPERTIES JUCE_COMPANY_NAME ...)` after including JUCE but before + adding the targets, and then omit the `COMPANY_NAME` argument when creating the individual + targets. + +`COMPANY_WEBSITE` +- The address of a website related to this target in some way. The value of this argument will be + inherited from the `JUCE_COMPANY_WEBSITE` property, so if you want to use the same + `COMPANY_WEBSITE` for several targets in a build tree, you can call + `set_directory_properties(PROPERTIES JUCE_COMPANY_WEBSITE ...)` after including JUCE but before + adding the targets, and then omit the `COMPANY_WEBSITE` argument when creating the individual + targets. + +`COMPANY_EMAIL` +- An email address for this target's author. The value of this argument will be inherited from the + `JUCE_COMPANY_EMAIL` property, so if you want to use the same `COMPANY_EMAIL` for several + targets in a build tree, you can call `set_directory_properties(PROPERTIES JUCE_COMPANY_EMAIL + ...)` after including JUCE but before adding the targets, and then omit the `COMPANY_EMAIL` + argument when creating the individual targets. + +`DOCUMENT_EXTENSIONS` +- File extensions that should be associated with this target. For example, the Projucer passes + the string `jucer` because it wants to open `.jucer` files. If your target has several different + document types, you can pass them as multiple arguments, e.g. `DOCUMENT_EXTENSIONS wav mp3 aif`. + +`NEEDS_CURL` +- On Linux, JUCE may or may not need to link to Curl depending on the compile definitions that are + set on a JUCE target. By default, we don't link Curl because you might not need it, but if you + get linker or include errors that reference Curl, just set this argument to `TRUE`. + +`NEEDS_WEB_BROWSER` +- On Linux, JUCE may or may not need to link to Webkit depending on the compile definitions that + are set on a JUCE target. By default, we don't link Webkit because you might not need it, but + if you get linker or include errors that reference Webkit, just set this argument to `TRUE`. + +`NEEDS_STORE_KIT` +- On macOS, JUCE may or may not need to link to StoreKit depending on the compile definitions that + are set on a JUCE target. By default, we don't link StoreKit because you might not need it, but + if you get linker or include errors that reference StoreKit, just set this argument to `TRUE`. + +`PUSH_NOTIFICATIONS_ENABLED` +- Sets app entitlements to allow push notifications. False by default. + +`NETWORK_MULTICAST_ENABLED` +- Sets app entitlements to allow IP multicast or broadcast on macOS/iOS. False by default. + +`HARDENED_RUNTIME_ENABLED` +- Enables macOS' hardened runtime for this target. Required for notarisation. False by default. + +`HARDENED_RUNTIME_OPTIONS` +- A set of space-separated entitlement keys that will be added to this target's entitlements + plist if `HARDENED_RUNTIME_ENABLED` is `TRUE`. Each key should be in the form + `com.apple.security.*` where `*` is a specific entitlement. + +`APP_SANDBOX_ENABLED` +- Enables macOS' app sandbox for this target. False by default. + +`APP_SANDBOX_INHERIT` +- Allows child processes to inherit the static entitlements of their parent process. If this + is set to `TRUE`, no other app sandbox entitlements will be set on this target. + +`APP_SANDBOX_OPTIONS` +- A set of space-separated entitlement keys that will be added to this target's entitlements + plist if `APP_SANDBOX_ENABLED` is `TRUE`. Each key should be in the form `com.apple.security.*` + where `*` is a specific entitlement. + +`PLIST_TO_MERGE` +- A string to insert into an app/plugin's Info.plist. + +`FORMATS` +- For plugin targets, specifies the plugin targets to build. Should be provided as a + space-separated list. Valid values are `Standalone Unity VST3 AU AUv3 AAX VST`. `AU` and `AUv3` + plugins will only be enabled when building on macOS. It is an error to pass `AAX` or `VST` + without first calling `juce_set_aax_sdk_path` or `juce_set_vst2_sdk_path` respectively. + +`PLUGIN_NAME` +- The name of the plugin. In a DAW environment, this is the name that will be displayed to the + user when they go to load a plugin. This name may differ from the name of the physical plugin + file (to set the name of the plugin file, use the `PRODUCT_NAME` option). If not specified, + the `PLUGIN_NAME` will default to match the `PRODUCT_NAME`. + +`PLUGIN_MANUFACTURER_CODE` +- A four-character unique ID for your company. For AU compatibility, this must contain at least + one upper-case letter. GarageBand 10.3 requires the first letter to be upper-case, and the + remaining letters to be lower-case. + +`PLUGIN_CODE` +- A four-character unique ID for your plugin. For AU compatibility, this must contain exactly one + upper-case letter. GarageBand 10.3 requires the first letter to be upper-case, and the remaining + letters to be lower-case. + +`DESCRIPTION` +- A short description of your plugin. + +`IS_SYNTH` +- Whether the plugin is a synth. Will be used to set sensible plugin category values if they + are not provided explicitly. + +`NEEDS_MIDI_INPUT` +- Whether the plugin should provide a midi input. + +`NEEDS_MIDI_OUTPUT` +- Whether the plugin should provide a midi output. + +`IS_MIDI_EFFECT` +- Whether the plugin is a MIDI effect (some hosts provide a special channel-strip location for + MIDI effect plugins). + +`EDITOR_WANTS_KEYBOARD_FOCUS` +- Whether the plugin requires keyboard focus, or should defer all keyboard handling to the host. + +`DISABLE_AAX_BYPASS` +- Whether the AAX bypass function should be disabled. + +`DISABLE_AAX_MULTI_MONO` +- Whether the AAX multi mono bus layout should be disabled. + +`AAX_IDENTIFIER` +- The bundle ID for the AAX plugin target. Matches the `BUNDLE_ID` by default. + +`VST_NUM_MIDI_INS` +- For VST2 and VST3 plugins that accept midi, this allows you to configure the number of inputs. + +`VST_NUM_MIDI_OUTS` +- For VST2 and VST3 plugins that produce midi, this allows you to configure the number of outputs. + +`VST2_CATEGORY` +- Should be one of: `kPlugCategUnknown`, `kPlugCategEffect`, `kPlugCategSynth`, + `kPlugCategAnalysis`, `kPlugCategMatering`, `kPlugCategSpacializer`, `kPlugCategRoomFx`, + `kPlugSurroundFx`, `kPlugCategRestoration`, `kPlugCategOfflineProcess`, `kPlugCategShell`, + `kPlugCategGenerator`. + +`VST3_CATEGORIES` +- Should be one or more, separated by spaces, of the following: `Fx`, `Instrument`, `Analyzer`, + `Delay`, `Distortion`, `Drum`, `Dynamics`, `EQ`, `External`, `Filter`, `Generator`, `Mastering`, + `Modulation`, `Mono`, `Network`, `NoOfflineProcess`, `OnlyOfflineProcess`, `OnlyRT`, + `Pitch Shift`, `Restoration`, `Reverb`, `Sampler`, `Spatial`, `Stereo`, `Surround`, `Synth`, + `Tools`, `Up-Downmix` + +`AU_MAIN_TYPE` +- Should be one of: `kAudioUnitType_Effect`, `kAudioUnitType_FormatConverter`, + `kAudioUnitType_Generator`, `kAudioUnitType_MIDIProcessor`, `kAudioUnitType_Mixer`, + `kAudioUnitType_MusicDevice`, `kAudioUnitType_MusicEffect`, `kAudioUnitType_OfflineEffect`, + `kAudioUnitType_Output`, `kAudioUnitType_Panner` + +`AU_EXPORT_PREFIX` +- A prefix for the names of entry-point functions that your component exposes. Typically this + will be a version of your plugin's name that can be used as part of a C++ token. Defaults + to your plugin's name with the suffix 'AU'. + +`AU_SANDBOX_SAFE` +- May be either TRUE or FALSE. Adds the appropriate entries to an AU plugin's Info.plist. + +`SUPPRESS_AU_PLIST_RESOURCE_USAGE` +- May be either TRUE or FALSE. Defaults to FALSE. Set this to TRUE to disable the `resourceUsage` + key in the target's plist. This is useful for AU plugins that must access resources which cannot + be declared in the resourceUsage block, such as UNIX domain sockets. In particular, + PACE-protected AU plugins may require this option to be enabled in order for the plugin to load + in GarageBand. + +`AAX_CATEGORY` +- Should be one or more of: `AAX_ePlugInCategory_None`, `AAX_ePlugInCategory_EQ`, + `AAX_ePlugInCategory_Dynamics`, `AAX_ePlugInCategory_PitchShift`, `AAX_ePlugInCategory_Reverb`, + `AAX_ePlugInCategory_Delay`, `AAX_ePlugInCategory_Modulation`, `AAX_ePlugInCategory_Harmonic`, + `AAX_ePlugInCategory_NoiseReduction`, `AAX_ePlugInCategory_Dither`, + `AAX_ePlugInCategory_SoundField`, `AAX_ePlugInCategory_HWGenerators`, + `AAX_ePlugInCategory_SWGenerators`, `AAX_ePlugInCategory_WrappedPlugin`, + `AAX_ePlugInCategory_Effect` + +`PLUGINHOST_AU` +- May be either TRUE or FALSE (defaults to FALSE). If TRUE, will add the preprocessor definition + `JUCE_PLUGINHOST_AU=1` to the new target, and will link the macOS frameworks necessary for + hosting plugins. Using this parameter should be preferred over using + `target_compile_definitions` to manually set the `JUCE_PLUGINHOST_AU` preprocessor definition. + +`USE_LEGACY_COMPATIBILITY_PLUGIN_CODE` +- May be either TRUE or FALSE (defaults to FALSE). If TRUE, will override the value of the + preprocessor definition "JucePlugin_ManufacturerCode" with the hex equivalent of "proj". This + option exists to maintain compatiblity with a previous, buggy version of JUCE's CMake support + which mishandled the manufacturer code property. Most projects should leave this option set to + its default value. + +`COPY_PLUGIN_AFTER_BUILD` +- Whether or not to install the plugin to the current system after building. False by default. + If you want all of the plugins in a subdirectory to be installed automatically after building, + you can set the property `JUCE_COPY_PLUGIN_AFTER_BUILD` on the directory before adding the + plugins, rather than setting this argument on each individual target. Note that on Windows, + the default install locations may not be writable by normal user accounts. + +`VST_COPY_DIR` +- The location to which VST2 (legacy) plugins will be copied after building if + `COPY_PLUGIN_AFTER_BUILD` is set on this target. If you want to install all of the VST2 plugins + in a subdirectory to a non-default location, you can set the `JUCE_VST_COPY_DIR` property on + the directory before adding the plugin targets, rather than setting this argument on each + individual target. + +`VST3_COPY_DIR` +- The location to which VST3 plugins will be copied after building if `COPY_PLUGIN_AFTER_BUILD` + is set on this target. If you want to install all of the VST3 plugins in a subdirectory to a + non-default location, you can set the `JUCE_VST3_COPY_DIR` property on the directory before + adding the plugin targets, rather than setting this argument on each individual target. + +`AAX_COPY_DIR` +- The location to which AAX plugins will be copied after building if `COPY_PLUGIN_AFTER_BUILD` + is set on this target. If you want to install all of the AAX plugins in a subdirectory to a + non-default location, you can set the `JUCE_AAX_COPY_DIR` property on the directory before + adding the plugin targets, rather than setting this argument on each individual target. + +`AU_COPY_DIR` +- The location to which AU plugins will be copied after building if `COPY_PLUGIN_AFTER_BUILD` + is set on this target. If you want to install all of the AU plugins in a subdirectory to a + non-default location, you can set the `JUCE_AU_COPY_DIR` property on the directory before + adding the plugin targets, rather than setting this argument on each individual target. + +`UNITY_COPY_DIR` +- The location to which Unity plugins will be copied after building if `COPY_PLUGIN_AFTER_BUILD` + is set on this target. If you want to install all of the Unity plugins in a subdirectory to a + non-default location, you can set the `JUCE_UNITY_COPY_DIR` property on the directory before + adding the plugin targets, rather than setting this argument on each individual target. + Unlike the other `COPY_DIR` arguments, this argument does not have a default value so be sure + to set it if you have enabled `COPY_PLUGIN_AFTER_BUILD` and the `Unity` format. #### `juce_add_binary_data`