кодер. Класс BuildConfig

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

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

Описание

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

  • Выходной язык

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

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

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

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

Конструкция

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

Методы

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

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

Значение. Чтобы изучить, как классы значения влияют на операции копии, смотрите Копирование Объектов (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

Была ли эта тема полезной?