coder.BuildConfig class

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

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

Описание

Генератор кода создает объект этого класса облегчить доступ к 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