# Class CppLibraryPlugin

java.lang.Object
org.gradle.language.cpp.plugins.CppLibraryPlugin

All Implemented Interfaces:
  `Plugin<Project>`

public abstract class CppLibraryPlugin extends Object implements Plugin<Project>

A plugin that produces a native library from C++ source.

Assumes the source files are located in `src/main/cpp`, public headers are located in `src/main/public` and implementation header files are located in `src/main/headers`.

Adds a `CppLibrary` extension to the project to allow configuration of the library.

Since:
  4.1

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `CppLibraryPlugin(org.gradle.language.internal.NativeComponentFactory componentFactory, org.gradle.language.nativeplatform.internal.toolchains.ToolChainSelector toolChainSelector, org.gradle.api.internal.attributes.AttributesFactory attributesFactory, TargetMachineFactory targetMachineFactory)`
  CppLibraryPlugin.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `apply(Project project)`
  Apply this plugin to the given target object.

  ### Methods inherited from class Object

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

- ## Constructor Details

  - ### CppLibraryPlugin

    @Inject public CppLibraryPlugin(org.gradle.language.internal.NativeComponentFactory componentFactory, org.gradle.language.nativeplatform.internal.toolchains.ToolChainSelector toolChainSelector, org.gradle.api.internal.attributes.AttributesFactory attributesFactory, TargetMachineFactory targetMachineFactory)
    CppLibraryPlugin.
    Since:
      4.2

- ## Method Details

  - ### 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