coder.BuildConfig class

Пакет: coder
Суперклассы:

Создайте контекст во время генерации кода

Описание

Генератор кода создает объект этого класса, чтобы облегчить доступ к build context. Контекст сборки инкапсулирует настройки, используемые генератором кода, включая:

  • Целевой язык

  • Цель генерации кода

  • Целевой компьютер

  • Создайте набор инструментальных средств

Использование coder.BuildConfig методы в методах, которые вы пишете для coder.ExternalDependency класс.

Конструкция

Генератор кода создает объекты этого класса.

Методы

getHardwareImplementationПолучите указатель на копию объекта аппаратной реализации
getStdLibInfoПолучите стандартную информацию о библиотеке
getTargetLangПолучите целевой язык генерации кода
getToolchainInfoВозвращает указатель на копию информационного объекта набора инструментальных средств
isCodeGenTargetОпределите, представляет ли строение сборки заданный целевой объект
isMatlabHostTargetОпределите, является ли целевой объект аппаратной реализации MATLAB хоста-компьютера

Копировать семантику

Значение. Чтобы узнать, как классы значений влияют на операции копирования, см. раздел «Копирование объектов».

Примеры

свернуть все

В этом примере показано, как использовать coder.BuildConfig методы для доступа к контексту сборки в coder.ExternalDependency методы. В этом примере вы используете:

  • coder.BuildConfig.isMatlabHostTarget чтобы убедиться, что целью генерации кода является MATLAB® хост. Если хост не является MATLAB, сообщите об ошибке.

  • coder.BuildConfig.getStdLibInfo для получения расширений файлов библиотеки во время соединения и во время выполнения. Используйте эту информацию для обновления сведений о сборке.

Запись файла определения класса для внешней библиотеки, содержащей функцию adder.

%================================================================
% This class abstracts the API to an external Adder library.
% It implements static methods for updating the build information
% at compile time and build time.
%================================================================

classdef AdderAPI < coder.ExternalDependency
    %#codegen
    
    methods (Static)
        
        function bName = getDescriptiveName(~)
            bName = 'AdderAPI';
        end
        
        function tf = isSupportedContext(buildContext)
            if  buildContext.isMatlabHostTarget()
                tf = true;
            else
                error('adder library not available for this target');
            end
        end
        
        function updateBuildInfo(buildInfo, buildContext)
            % Get file extensions for the current platform
            [~, linkLibExt, execLibExt, ~] = buildContext.getStdLibInfo();
            
            % Add file paths
            hdrFilePath = fullfile(pwd, 'codegen', 'dll', 'adder');
            buildInfo.addIncludePaths(hdrFilePath);

            % Link files
            linkFiles = strcat('adder', linkLibExt);
            linkPath = hdrFilePath;
            linkPriority = '';
            linkPrecompiled = true;
            linkLinkOnly = true;
            group = '';
            buildInfo.addLinkObjects(linkFiles, linkPath, ...
                linkPriority, linkPrecompiled, linkLinkOnly, group);

            % Non-build files for packaging
            nbFiles = 'adder';
            nbFiles = strcat(nbFiles, execLibExt);
            buildInfo.addNonBuildFiles(nbFiles,'','');
        end
        
        %API for library function 'adder'
        function c = adder(a, b)
            if coder.target('MATLAB')
                % running in MATLAB, use built-in addition
                c = a + b;
            else
                % Add the required include statements to the generated function code
                coder.cinclude('adder.h');
                coder.cinclude('adder_initialize.h');
                coder.cinclude('adder_terminate.h');
                c = 0;
                
                % Because MATLAB Coder generated adder, use the
                % housekeeping functions before and after calling
                % adder with coder.ceval.

                coder.ceval('adder_initialize');
                c = coder.ceval('adder', a, b);
                coder.ceval('adder_terminate');
            end
        end
    end
end
Введенный в R2013b