# ExternalNativeBuild

# ExternalNativeBuild

```
@Incubating interface ExternalNativeBuild
```

|--------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [com.android.build.api.dsl.ExternalNativeBuild](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/dsl/ExternalNativeBuild#) |

DSL object to configure external native builds using[CMake](https://cmake.org/)or[ndk-build](https://developer.android.com/ndk/guides/build.html)  

```text
android {
    externalNativeBuild {
        // Encapsulates your CMake build configurations.
        // For ndk-build, instead use the ndkBuild block.
        cmake {
            // Specifies a path to your CMake build script that's
            // relative to the build.gradle file.
            path "CMakeLists.txt"
        }
    }
}
```

To learn more about including external native builds to your Android Studio projects, read[Add C and C++ Code to Your Project](https://developer.android.com/studio/projects/add-native-code.html)

## Summary

|                                                                                                                                                                                                                                                                                                 ### Public methods                                                                                                                                                                                                                                                                                                  ||
|--------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| abstract[Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html) | [cmake](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/dsl/ExternalNativeBuild#cmake(kotlin.Function1))`(`action:` `[Cmake](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/dsl/Cmake).()` `->` `[Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html)`)` Encapsulates per-variant configurations for your external ndk-build project, such as the path to your`CMakeLists.txt`build script and build output directory.         |
| abstract[Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html) | [ndkBuild](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/dsl/ExternalNativeBuild#ndkBuild(kotlin.Function1))`(`action:` `[NdkBuild](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/dsl/NdkBuild).()` `->` `[Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html)`)` Encapsulates per-variant configurations for your external ndk-build project, such as the path to your`Android.mk`build script and build output directory. |

|                                                                                                                                                                                                                  ### Properties                                                                                                                                                                                                                   ||
|---------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| abstract[Cmake](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/dsl/Cmake)       | [cmake](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/dsl/ExternalNativeBuild#cmake:com.android.build.api.dsl.Cmake) Encapsulates per-variant configurations for your external ndk-build project, such as the path to your`CMakeLists.txt`build script and build output directory.      |
| abstract[NdkBuild](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/dsl/NdkBuild) | [ndkBuild](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/dsl/ExternalNativeBuild#ndkBuild:com.android.build.api.dsl.NdkBuild) Encapsulates per-variant configurations for your external ndk-build project, such as the path to your`Android.mk`build script and build output directory. |

## Public methods

### cmake

```
abstract fun cmake(action: Cmake.() -> Unit): Unit
```

Encapsulates per-variant configurations for your external ndk-build project, such as the path to your`CMakeLists.txt`build script and build output directory.

For more information about the properties you can configure in this block, see[Cmake](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/dsl/Cmake)  

### ndkBuild

```
abstract fun ndkBuild(action: NdkBuild.() -> Unit): Unit
```

Encapsulates per-variant configurations for your external ndk-build project, such as the path to your`Android.mk`build script and build output directory.

For more information about the properties you can configure in this block, see[NdkBuild](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/dsl/NdkBuild)

## Properties

### cmake

```
abstract val cmake: Cmake
```

Encapsulates per-variant configurations for your external ndk-build project, such as the path to your`CMakeLists.txt`build script and build output directory.

For more information about the properties you can configure in this block, see[Cmake](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/dsl/Cmake)  

### ndkBuild

```
abstract val ndkBuild: NdkBuild
```

Encapsulates per-variant configurations for your external ndk-build project, such as the path to your`Android.mk`build script and build output directory.

For more information about the properties you can configure in this block, see[NdkBuild](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/dsl/NdkBuild)