# NativeBasePlugin

@Incubating
abstract class NativeBasePlugin : Plugin<Project>

A common base plugin for the native plugins.

Expects plugins to register the native components in the getComponents container, and defines a number of rules that act on these components to configure them.

- Configures the {@value LifecycleBasePlugin#ASSEMBLE_TASK_NAME} task to build the development binary of the main component, if present. Expects the main component to be of type ProductionComponent and ComponentWithBinaries.
- Adds an `"assemble"` task for each binary of the main component.
- Adds tasks to compile and link an executable. Currently requires component implements internal API ConfigurableComponentWithExecutable.
- Adds tasks to compile and link a shared library. Currently requires component implements internal API ConfigurableComponentWithSharedLibrary.
- Adds tasks to compile and create a static library. Currently requires component implements internal API ConfigurableComponentWithStaticLibrary.
- Adds outgoing configuration and artifacts for link file. Currently requires component implements internal API ConfigurableComponentWithLinkUsage.
- Adds outgoing configuration and artifacts for runtime file. Currently requires component implements internal API ConfigurableComponentWithRuntimeUsage.
- Maven publications. Currently requires component implements internal API PublicationAwareComponent.
- Adds TargetMachineFactory for configuring TargetMachine.

#### Since

4.5

## Constructors

NativeBasePlugin
Link copied to clipboard
@Inject
constructor(targetMachineFactory: TargetMachineFactory)

## Functions

apply
Link copied to clipboard
open fun apply(project: Project)
Apply this plugin to the given target object.