Package org.gradle.language.nativeplatform.tasks

## Class AbstractNativeCompileTask

- java.lang.Object
- - org.gradle.api.internal.AbstractTask
  - - org.gradle.api.DefaultTask
    - - org.gradle.language.nativeplatform.tasks.AbstractNativeCompileTask

- All Implemented Interfaces:
    `Comparable<Task>`, `org.gradle.api.internal.DynamicObjectAware`, `org.gradle.api.internal.TaskInternal`, `ExtensionAware`, `Task`, `Configurable<Task>`
  Direct Known Subclasses:
    `AbstractNativePCHCompileTask`, `AbstractNativeSourceCompileTask`

      @DisableCachingByDefault(because="Abstract super-class, not to be instantiated directly")
      public abstract class AbstractNativeCompileTask
      extends DefaultTask

  Compiles native source files into object files.

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from interface org.gradle.api.Task

      `Task.Namer`

  - ### Field Summary

    - ### Fields inherited from interface org.gradle.api.Task

      `TASK_ACTION, TASK_CONSTRUCTOR_ARGS, TASK_DEPENDS_ON, TASK_DESCRIPTION, TASK_GROUP, TASK_NAME, TASK_OVERWRITE, TASK_TYPE`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `AbstractNativeCompileTask()` |

  - ### Method Summary

    All Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `protected void` | `compile​(InputChanges inputs)` |
    `protected void` | `configureSpec​(org.gradle.nativeplatform.toolchain.internal.NativeCompileSpec spec)` |
    `protected abstract org.gradle.nativeplatform.toolchain.internal.NativeCompileSpec` | `createCompileSpec()` |
    `ListProperty<String>` | `getCompilerArgs()` | Additional arguments to provide to the compiler.
    `protected org.gradle.api.internal.file.FileCollectionFactory` | `getFileCollectionFactory()` |
    `protected FileCollection` | `getHeaderDependencies()` | The set of dependent headers.
    `ConfigurableFileCollection` | `getIncludes()` | Returns the header directories to be used for compilation.
    `protected org.gradle.language.nativeplatform.internal.incremental.IncrementalCompilerBuilder` | `getIncrementalCompilerBuilder()` |
    `Map<String,​String>` | `getMacros()` | Macros that should be defined for the compiler.
    `DirectoryProperty` | `getObjectFileDir()` | The directory where object files will be generated.
    `protected org.gradle.internal.operations.logging.BuildOperationLoggerFactory` | `getOperationLoggerFactory()` |
    `ConfigurableFileCollection` | `getSource()` | Returns the source files to be compiled.
    `ConfigurableFileCollection` | `getSystemIncludes()` | Returns the system include directories to be used for compilation.
    `Property<NativePlatform>` | `getTargetPlatform()` | The platform being compiled for.
    `protected org.gradle.api.internal.file.TaskFileVarFactory` | `getTaskFileVarFactory()` |
    `Property<NativeToolChain>` | `getToolChain()` | The tool chain used for compilation.
    `void` | `includes​(Object includeRoots)` | Add directories where the compiler should search for header files.
    `boolean` | `isDebuggable()` | Should the compiler generate debuggable code?
    `boolean` | `isOptimized()` | Should the compiler generate optimized code?
    `boolean` | `isPositionIndependentCode()` | Should the compiler generate position independent code?
    `void` | `setDebuggable​(boolean debug)` | Should the compiler generate debuggable code?
    `void` | `setMacros​(Map<String,​String> macros)` |
    `void` | `setOptimized​(boolean optimize)` | Should the compiler generate optimized code?
    `void` | `setPositionIndependentCode​(boolean positionIndependentCode)` |
    `void` | `source​(Object sourceFiles)` | Adds a set of source files to be compiled.

    - ### Methods inherited from class org.gradle.api.DefaultTask

      `compareTo, configure, dependsOn, doFirst, doFirst, doFirst, doLast, doLast, doLast, finalizedBy, getActions, getAnt, getDependsOn, getDescription, getDestroyables, getDidWork, getEnabled, getExtensions, getFinalizedBy, getGroup, getInputs, getLocalState, getLogger, getLogging, getMustRunAfter, getName, getOutputs, getPath, getProject, getShouldRunAfter, getState, getTaskDependencies, getTemporaryDir, getTimeout, hasProperty, mustRunAfter, onlyIf, onlyIf, property, setActions, setDependsOn, setDescription, setDidWork, setEnabled, setFinalizedBy, setGroup, setMustRunAfter, setOnlyIf, setOnlyIf, setProperty, setShouldRunAfter, shouldRunAfter, usesService`

    - ### Methods inherited from class org.gradle.api.internal.AbstractTask

      `appendParallelSafeAction, doNotTrackState, getAsDynamicObject, getConvention, getIdentityPath, getImpliesSubProjects, getOnlyIf, getReasonNotToTrackState, getRequiredServices, getServices, getSharedResources, getStandardOutputCapture, getTaskActions, getTaskIdentity, getTemporaryDirFactory, hasTaskActions, injectIntoNewInstance, isEnabled, isHasCustomActions, prependParallelSafeAction, setImpliesSubProjects`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

    - ### Methods inherited from interface org.gradle.api.Task

      `doNotTrackState, getConvention`

- - ### Constructor Detail

    - #### AbstractNativeCompileTask

          public AbstractNativeCompileTask()

  - ### Method Detail

    - #### getTaskFileVarFactory

          @Inject
          protected org.gradle.api.internal.file.TaskFileVarFactory getTaskFileVarFactory()

    - #### getIncrementalCompilerBuilder

          @Inject
          protected org.gradle.language.nativeplatform.internal.incremental.IncrementalCompilerBuilder getIncrementalCompilerBuilder()

    - #### getOperationLoggerFactory

          @Inject
          protected org.gradle.internal.operations.logging.BuildOperationLoggerFactory getOperationLoggerFactory()

    - #### getFileCollectionFactory

          @Inject
          protected org.gradle.api.internal.file.FileCollectionFactory getFileCollectionFactory()

    - #### compile

          protected void compile​(InputChanges inputs)

    - #### configureSpec

          protected void configureSpec​(org.gradle.nativeplatform.toolchain.internal.NativeCompileSpec spec)

    - #### createCompileSpec

          protected abstract org.gradle.nativeplatform.toolchain.internal.NativeCompileSpec createCompileSpec()

    - #### getToolChain

          @Internal
          public Property<NativeToolChain> getToolChain()

      The tool chain used for compilation.
      Since:
        4.7

    - #### getTargetPlatform

          public Property<NativePlatform> getTargetPlatform()

      The platform being compiled for.
      Since:
        4.7

    - #### isPositionIndependentCode

          @Input
          public boolean isPositionIndependentCode()

      Should the compiler generate position independent code?

    - #### setPositionIndependentCode

          public void setPositionIndependentCode​(boolean positionIndependentCode)

    - #### isDebuggable

          @Input
          public boolean isDebuggable()

      Should the compiler generate debuggable code?
      Since:
        4.3

    - #### setDebuggable

          public void setDebuggable​(boolean debug)

      Should the compiler generate debuggable code?
      Since:
        4.3

    - #### isOptimized

          @Input
          public boolean isOptimized()

      Should the compiler generate optimized code?
      Since:
        4.3

    - #### setOptimized

          public void setOptimized​(boolean optimize)

      Should the compiler generate optimized code?
      Since:
        4.3

    - #### getObjectFileDir

          @OutputDirectory
          public DirectoryProperty getObjectFileDir()

      The directory where object files will be generated.
      Since:
        4.3

    - #### getIncludes

          @Internal("The paths for include directories are tracked via the includePaths property, the contents are tracked via discovered inputs")
          public ConfigurableFileCollection getIncludes()

      Returns the header directories to be used for compilation.

    - #### includes

          public void includes​(Object includeRoots)

      Add directories where the compiler should search for header files.

    - #### getSystemIncludes

          @Internal("The paths for include directories are tracked via the includePaths property, the contents are tracked via discovered inputs")
          public ConfigurableFileCollection getSystemIncludes()

      Returns the system include directories to be used for compilation.
      Since:
        4.8

    - #### getSource

          @InputFiles
          @SkipWhenEmpty
          @IgnoreEmptyDirectories
          @PathSensitive(RELATIVE)
          public ConfigurableFileCollection getSource()

      Returns the source files to be compiled.

    - #### source

          public void source​(Object sourceFiles)

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

    - #### getMacros

          @Input
          public Map<String,​String> getMacros()

      Macros that should be defined for the compiler.

    - #### setMacros

          public void setMacros​(Map<String,​String> macros)

    - #### getCompilerArgs

          @Input
          public ListProperty<String> getCompilerArgs()

      Additional arguments to provide to the compiler.
      Since:
        4.3

    - #### getHeaderDependencies

          @Incremental
          @InputFiles
          @PathSensitive(NAME_ONLY)
          protected FileCollection getHeaderDependencies()

      The set of dependent headers. This is used for up-to-date checks only.
      Since:
        4.3