ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

coder.BuildConfig クラス

パッケージ: coder

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

説明

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

  • ターゲット言語

  • コード生成ターゲット

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

  • ビルド ツールチェーン

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

作成

コード生成ソフトウェアで、このクラスのオブジェクトが作成されます。

メソッド

getHardwareImplementationハードウェア実行オブジェクトのコピーのハンドルの取得
getStdLibInfo標準ライブラリの情報の取得
getTargetLangターゲット コード生成言語の取得
getToolchainInfoツールチェーン情報オブジェクトのコピーのハンドルの返却
isCodeGenTargetビルド構成が指定されたターゲットを表すかどうかを判別
isMatlabHostTargetハードウェア実行オブジェクト ターゲットが MATLAB ホスト コンピューターであるかどうかを判別

コピーのセマンティクス

値。値クラスがコピー操作に与える影響については、MATLAB® ドキュメンテーションの「オブジェクトのコピー」を参照してください。

すべて折りたたむ

coder.BuildConfig メソッドを使用して、coder.ExternalDependency メソッドでビルド コンテキストにアクセスします。

次の例では、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(ctx)
            if  ctx.isMatlabHostTarget()
                tf = true;
            else
                error('adder library not available for this target');
            end
        end
        
        function updateBuildInfo(buildInfo, ctx)
            [~, linkLibExt, execLibExt, ~] = ctx.getStdLibInfo();
            
            % Header files
            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
            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
                % running in generated code, call library function
                coder.cinclude('adder.h');
                
                % Because MATLAB Coder generated adder, use the
                % housekeeping functions before and after calling
                % adder with coder.ceval.
                % Call initialize function before calling adder for the
                % first time.
                
                coder.ceval('adder_initialize');
                c = 0;
                c = coder.ceval('adder', a, b);
                
                
                % Call the terminate function after
                % calling adder for the last time.
                
                coder.ceval('adder_terminate');
            end
        end
    end
end
この情報は役に立ちましたか?