exponenta event banner

класс coder.BuildConfig

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

Контекст построения во время создания кода

Описание

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

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

  • Цель создания кода

  • Оконечное оборудование

  • Построение цепочки инструментов

Использовать 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