Main Content

coder.BuildConfig クラス

名前空間: coder

コード生成時のビルド コンテキスト

説明

コード ジェネレーターで、このクラスのオブジェクトを作成し、"ビルド コンテキスト" へのアクセスを容易にします。ビルド コンテキストは、次を含むコード ジェネレーターで使用される設定をカプセル化します。

  • ターゲット言語

  • コード生成ターゲット

  • ターゲット ハードウェア

  • ビルド ツールチェーン

coder.ExternalDependency クラスで作成したメソッドで coder.BuildConfig メソッドを使用します。

クラス属性

Abstract
true

クラス属性の詳細については、クラスの属性を参照してください。

作成

コード ジェネレーターはこのクラスのオブジェクトを作成します。

メソッド

すべて展開する

すべて折りたたむ

次の例では、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 で導入