# Interface CppLibrary

All Superinterfaces:
  `ComponentWithBinaries, ComponentWithDependencies, ComponentWithTargetMachines, CppComponent, Named, ProductionComponent, ProductionCppComponent, SoftwareComponent`

public interface CppLibrary extends ProductionCppComponent
Configuration for a C++ library, defining the source files and header directories that make up the library plus other settings.

An instance of this type is added as a project extension by the C++ library plugin.

Since:
  4.2

- ## Nested Class Summary

  ### Nested classes/interfaces inherited from interface Named

  `Named.Namer`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `Configuration`
  `getApiDependencies()`
  Returns the API dependencies of this library.
  `LibraryDependencies`
  `getDependencies()`
  Returns the dependencies of this library.
  `SetProperty<Linkage>`
  `getLinkage()`
  Returns the list of linkage of this library.
  `FileCollection`
  `getPublicHeaderDirs()`
  Returns the public header file directories of this component, as defined in `getPublicHeaders()`.
  `FileTree`
  `getPublicHeaderFiles()`
  Returns public header files of this component.
  `ConfigurableFileCollection`
  `getPublicHeaders()`
  Defines the public header file directories of this library.
  `void`
  `publicHeaders(Action<? super ConfigurableFileCollection> action)`
  Configures the public header directories for this component.

  ### Methods inherited from interface ComponentWithTargetMachines

  `getTargetMachines`

  ### Methods inherited from interface CppComponent

  `getBaseName, getBinaries, getCppSource, getHeaderFiles, getImplementationDependencies, getPrivateHeaderDirs, getPrivateHeaders, getSource, privateHeaders, source`

  ### Methods inherited from interface Named

  `getName`

  ### Methods inherited from interface ProductionCppComponent

  `getDevelopmentBinary`

- ## Method Details

  - ### getPublicHeaders

    ConfigurableFileCollection getPublicHeaders()
    Defines the public header file directories of this library.

    When this collection is empty, the directory `src/main/public` is used by default.

    Since:
      4.2

  - ### publicHeaders

    void publicHeaders(Action<? super ConfigurableFileCollection> action)
    Configures the public header directories for this component.
    Since:
      4.2

  - ### getPublicHeaderDirs

    FileCollection getPublicHeaderDirs()
    Returns the public header file directories of this component, as defined in `getPublicHeaders()`.
    Since:
      4.2

  - ### getPublicHeaderFiles

    FileTree getPublicHeaderFiles()
    Returns public header files of this component.
    Since:
      4.3

  - ### getDependencies

    LibraryDependencies getDependencies()
    Returns the dependencies of this library.
    Specified by:
      `getDependencies` in interface `ComponentWithDependencies`
    Since:
      4.6

  - ### getApiDependencies

    Configuration getApiDependencies()
    Returns the API dependencies of this library.
    Since:
      4.2

  - ### getLinkage

    SetProperty<Linkage> getLinkage()
    Returns the list of linkage of this library.
    Since:
      4.5