Package org.gradle.language.plugins

## Class NativeBasePlugin

- java.lang.Object
- - org.gradle.language.plugins.NativeBasePlugin

- All Implemented Interfaces:
    `Plugin<Project>`

      @Incubating
      public abstract class NativeBasePlugin
      extends java.lang.Object
      implements Plugin<Project>

  A common base plugin for the native plugins.

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

  - Configures the "assemble" 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

- - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `NativeBasePlugin​(TargetMachineFactory targetMachineFactory)` |

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `apply​(Project project)` | Apply this plugin to the given target object.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### NativeBasePlugin

          @Inject
          public NativeBasePlugin​(TargetMachineFactory targetMachineFactory)

  - ### Method Detail

    - #### apply

          public void apply​(Project project)

      Description copied from interface: `Plugin`
      Apply this plugin to the given target object.
      Specified by:
        `apply` in interface `Plugin<Project>`
      Parameters:
        `project` - The target object