DcbCMakeBuilder class final

A reusable build-hook builder that drives CMake to compile a native library and emits it as a bundled CodeAsset.

The builder performs three CMake steps inside input.outputDirectory/dcb_build/:

  1. cmake -S <sourceDir> -B <buildDir> [generator] [defines]
  2. cmake --build <buildDir> --config <Release|Debug>
  3. Locate the produced dynamic library and emit it as a CodeAsset.

On Windows with WindowsConfig.dynamicCrt = true and WindowsConfig.bundleCrt = true, the correct CRT runtime DLLs are copied next to the output library after a successful build.

Constructors

DcbCMakeBuilder({required DcbPlatformConfig config, required String assetName, String? assetPackage, String? sourceDir, String? libName, List<String> extraDefines = const [], bool useDefaultCmakeArgs = true, DcbBuildOptions buildOptions = const DcbBuildOptions()})
const

Properties

assetName → String
The code-asset name within the package, e.g. 'hook_demo.dart'.
final
assetPackage → String?
The package namespace for the emitted code asset.
final
buildOptions → DcbBuildOptions
Top-level build options (debug/release, etc.).
final
config → DcbPlatformConfig
The platform configuration selecting CMake behavior.
final
extraDefines → List<String>
Extra definitions passed verbatim to the CMake configure step, applied on all platforms. Platform-specific defines can also be set via WindowsConfig.extraDefines.
final
hashCode → int
The hash code for this object.
no setterinherited
libName → String?
The expected library base name (CMake output name). Defaults to the package name.
final
runtimeType → Type
A representation of the runtime type of the object.
no setterinherited
sourceDir → String?
The CMake source directory (cmake -S), relative to the package root. Defaults to the package root.
final
useDefaultCmakeArgs → bool
Whether to inject the builder's default CMake configure arguments.
final

Methods

noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
run({required BuildInput input, required BuildOutputBuilder output}) → Future<void>
Runs the CMake build and emits the produced library as a bundled CodeAsset.
toString() → String
A string representation of this object.
inherited

Operators

operator ==(Object other) → bool
The equality operator.
inherited

Static Methods

resolveAndroidAbi(Architecture? arch, [String? override]) → String
Resolve an Android ABI using the same target/override rules as run.
resolveWindowsArchitecture(Architecture? targetArchitecture, [String? override]) → String
Resolve a Windows CMake architecture using the same target/override rules as run.