target.CMakeBuilder - Configure how CMake builds generated code - MATLAB (original) (raw)

Namespace: target

Configure how CMake builds generated code

Since R2022b

Description

Use a target.CMakeBuilder object to configure how CMake builds generated code.

To create a target.CMakeBuilder object, use the target.create function.

Properties

expand all

Optional. Array of additional CMake cache entries to pass to the CMake tool as part of the command line invocation. The software expands the entries in this form:

cmake -D name:type=value ...

Attributes:

GetAccess public
SetAccess public

Generator that CMake must use, that is, the generator value for the command cmake -G_`generator`_.

If the string value has no spaces, for example, nameWithNoSpaces, the software passes this command to the CMake tool:

cmake -G nameWithNoSpaces

If the string value has spaces, for example, name With Spaces, the software passes this command to the CMake tool:

cmake -G "name With Spaces"

Attributes:

GetAccess public
SetAccess public

Whether generator is multi-configuration:

Attributes:

GetAccess public
SetAccess public

Data Types: logical

Optional. Platform name for the generator, that is, the_platformName_ value for the command cmake -A_`platformName`_.

If the string value has no spaces, for example, nameWithNoSpaces, the software passes this command to the CMake tool:

cmake -A nameWithNoSpaces

If the string value has spaces, for example, name With Spaces, the software passes this command to the CMake tool:

cmake -A "name With Spaces"

Attributes:

GetAccess public
SetAccess public

Build types or build configurations supported by generator and toolchain file.

The property is prepopulated with definitions of build types and build configurations that are available by default. If the Generator property is set to Ninja Multi-Config, the build typeMinSizeRel, is not supported by default. Unless you defineMinSizeRel in a toolchain file, you must remove it from the object array. This code snippet shows how you can removeMinSizeRel.

tc = target.create('Toolchain', 'Name', 'CMake/Ninja Multi-Config'); tc.Builder = target.create('CMakeBuilder'); tc.Builder.Generator = 'Ninja Multi-Config'; tc.Builder.GeneratorIsMultiConfig = true; tc.Builder.CommandLineCacheEntries(end+1) = ... target.create('CMakeCacheEntry', 'Name', 'CMAKE_C_COMPILER', 'Value', 'gcc'); tc.Builder.CommandLineCacheEntries(end+1) = ... target.create('CMakeCacheEntry', 'Name', 'CMAKE_CXX_COMPILER', 'Value', 'g++'); tc.Builder.SupportedBuildTypes(strcmp({tc.Builder.SupportedBuildTypes}, 'MinSizeRel')) = [];

Attributes:

GetAccess public
SetAccess public

Optional. Path to a CMake toolchain file, that is, the_toolChain_ value for the command cmake -D CMAKE_TOOLCHAIN_FILE=_`toolChain`_.

If the string value has no spaces, for example, nameWithNoSpaces, the software passes this command to the CMake tool:

cmake -D CMAKE_TOOLCHAIN_FILE=nameWithNoSpaces

If the string value has spaces, for example, name With Spaces, the software passes this command to the CMake tool:

cmake -D CMAKE_TOOLCHAIN_FILE="name With Spaces"

Attributes:

GetAccess public
SetAccess public

Optional. Tool set specification for generator, that is, the_toolSet_ value for the command cmake -T_`toolSet`_.

If the string value has no spaces, for example, nameWithNoSpaces, the software passes this command to the CMake tool:

cmake -T nameWithNoSpaces

If the string value has spaces, for example, name With Spaces, the software passes this command to the CMake tool:

cmake -T "name With Spaces"

Attributes:

GetAccess public
SetAccess public

Examples

collapse all

This code snippet from Create Custom CMake Toolchain Definition shows how you can use the Builder property of the target.Toolchain object and a target.CMakeBuilder object to configure how CMake builds generated code.

tc = target.create('Toolchain', 'Name', 'Example Custom CMake Toolchain'); tc.Builder = target.create('CMakeBuilder'); tc.Builder.Generator = 'Ninja'; tc.Builder.ToolchainFile = fullfile(pwd, 'ExampleCMakeToolchain.cmake'); tc.Builder.SupportedBuildTypes(end+1) = ... target.create('CMakeBuildType', ... 'Name', 'FastMath', ... 'GeneratesDebugSymbols', false, ... 'DebugBuildType', 'FastMathWithDebug'); tc.Builder.SupportedBuildTypes(end+1) = ... target.create('CMakeBuildType', ... 'Name', 'FastMathWithDebug', ... 'GeneratesDebugSymbols', true);

Version History

Introduced in R2022b