# CppLibrary

API Documentation: | `CppLibrary`

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.

### Properties

Property | Description
`baseName` | Specifies the base name for this component. This name is used to calculate various output file names. The default value is calculated from the project name.
`binaries` | The binaries of this component.
`developmentBinary` | The binary of the component to use as the default for development.
`linkage` | The list of linkage of this library.
`privateHeaders` | Defines the private header file directories of this library.
`publicHeaders` | Defines the public header file directories of this library.
`source` | Defines the source files or directories of this component. You can add files or directories to this collection. When a directory is added, all source files are included for compilation.
`targetMachines` | Specifies the target machines this component should be built for. The "machines" extension property (see `TargetMachineFactory`) can be used to construct common operating system and architecture combinations.

### Methods

Method | Description
`privateHeaders(action)` | Configures the private header directories for this component.
`publicHeaders(action)` | Configures the public header directories for this component.
`source(action)` | Configures the source files or directories for this component.

### Script blocks

No script blocks

### Property details

#### ``Property`<`String`>` `baseName`

Specifies the base name for this component. This name is used to calculate various output file names. The default value is calculated from the project name.

#### ``BinaryCollection`<? extends `SoftwareComponent`>` `binaries` (read-only)

The binaries of this component.

#### ``Provider`<? extends `CppBinary`>` `developmentBinary`

The binary of the component to use as the default for development.

#### ``SetProperty`<`Linkage`>` `linkage`

The list of linkage of this library.

#### `ConfigurableFileCollection` `privateHeaders` (read-only)

Defines the private header file directories of this library.

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

#### `ConfigurableFileCollection` `publicHeaders` (read-only)

Defines the public header file directories of this library.

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

#### `ConfigurableFileCollection` `source` (read-only)

Defines the source files or directories of this component. You can add files or directories to this collection. When a directory is added, all source files are included for compilation.

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

#### ``SetProperty`<`TargetMachine`>` `targetMachines`

Specifies the target machines this component should be built for. The "machines" extension property (see `TargetMachineFactory`) can be used to construct common operating system and architecture combinations.

For example:

    targetMachines = [machines.linux.x86_64, machines.windows.x86_64]

### Method details

#### `void` `privateHeaders`(``Action`<? super `ConfigurableFileCollection`>` action)

Configures the private header directories for this component.

#### `void` `publicHeaders`(``Action`<? super `ConfigurableFileCollection`>` action)

Configures the public header directories for this component.

#### `void` `source`(``Action`<? super `ConfigurableFileCollection`>` action)

Configures the source files or directories for this component.