# SwiftLibrary

API Documentation: | `SwiftLibrary`

Configuration for a Swift library, defining the source files that make up the library plus other settings.

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

### Properties

Property | Description
`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.
`module` | Defines the Swift module for this component. The default value is calculated from the project name.
`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
`source(action)` | Configures the source files or directories for this component.

### Script blocks

No script blocks

### Property details

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

The binaries of this component.

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

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

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

The list of linkage of this library.

#### ``Property`<`String`>` `module`

Defines the Swift module for this component. The default value is calculated from the project name.

#### `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/swift` 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` `source`(``Action`<? super `ConfigurableFileCollection`>` action)

Configures the source files or directories for this component.