# SwiftComponent

API Documentation: | `SwiftComponent`

Known Subtypes: |
`ProductionSwiftComponent`
`SwiftXCTestSuite`

Configuration for a Swift component, such as a library or executable, defining the source files that make up the component plus other settings.

Swift component is composed of some Swift source files that are compiled and then linked into some binary.

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

### Properties

Property | Description
`binaries` | The binaries of this component.
`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.

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