# AbstractNativeSourceCompileTask

API Documentation: | `AbstractNativeSourceCompileTask`

Known Subtypes: |
`CppCompile` | `ObjectiveCCompile` |
`CCompile` | `ObjectiveCppCompile` |

Note: This class is incubating and may change in a future version of Gradle.

Compiles native source files into object files.

### Properties

Property | Description
`compilerArgs` | Incubating Additional arguments to provide to the compiler.
`includes` | Incubating The header directories to be used for compilation.
`macros` | Incubating Macros that should be defined for the compiler.
`objectFileDir` | Incubating The directory where object files will be generated.
`positionIndependentCode` | Incubating Should the compiler generate position independent code?
`source` | Incubating The source files to be compiled.
`targetPlatform` | Incubating The platform being targeted.
`toolChain` | Incubating The tool chain used for compilation.

### Methods

Method | Description
`includes(includeRoots)` | Incubating Add directories where the compiler should search for header files.
`source(sourceFiles)` | Incubating Adds a set of source files to be compiled. The provided sourceFiles object is evaluated as per `Project.files(java.lang.Object[])`.

### Script blocks

No script blocks

### Property details

#### ``List`<`String`>` `compilerArgs`

Note: This property is incubating and may change in a future version of Gradle.

Additional arguments to provide to the compiler.

#### `FileCollection` `includes` (read-only)

Note: This property is incubating and may change in a future version of Gradle.

The header directories to be used for compilation.

#### ``Map`<`String`, `String`>` `macros`

Note: This property is incubating and may change in a future version of Gradle.

Macros that should be defined for the compiler.

#### `File` `objectFileDir`

Note: This property is incubating and may change in a future version of Gradle.

The directory where object files will be generated.

#### `boolean` `positionIndependentCode`

Note: This property is incubating and may change in a future version of Gradle.

Should the compiler generate position independent code?

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

Note: This property is incubating and may change in a future version of Gradle.

The source files to be compiled.

#### `NativePlatform` `targetPlatform`

Note: This property is incubating and may change in a future version of Gradle.

The platform being targeted.

#### `NativeToolChain` `toolChain`

Note: This property is incubating and may change in a future version of Gradle.

The tool chain used for compilation.

### Method details

#### `void` `includes`(`Object` includeRoots)

Note: This method is incubating and may change in a future version of Gradle.

Add directories where the compiler should search for header files.

#### `void` `source`(`Object` sourceFiles)

Note: This method is incubating and may change in a future version of Gradle.

Adds a set of source files to be compiled. The provided sourceFiles object is evaluated as per `Project.files(java.lang.Object[])`.