Main Content

coder.LAPACKCallback.updateBuildInfo

クラス: coder.LAPACKCallback
名前空間: coder

特定の LAPACK ライブラリにリンクするためのビルド情報の更新

構文

coder.LAPACKCallback.updateBuildInfo(buildInfo, buildctx)

説明

coder.LAPACKCallback.updateBuildInfo(buildInfo, buildctx) は、ビルド情報オブジェクト buildInfo を、特定の LAPACK ライブラリにリンクするためのビルド プロセスに必要な情報で更新します。

coder.LAPACKCallback は LAPACK コールバック クラスを定義するための抽象クラスです。LAPACK コールバック クラスは、MATLAB® コードから生成されたコードでの LAPACK 呼び出しに使用する LAPACK ライブラリと LAPACKE ヘッダー ファイルを指定します。コード生成時に、LAPACK コールバック クラスを指定すると、特定の線形代数関数の呼び出しでは、コード ジェネレーターはスタンドアロン コードで LAPACK 呼び出しを生成します。

入力引数

すべて展開する

コードの生成後、このオブジェクトには標準プロジェクト、ビルド オプションおよび依存関係情報が含まれます。updateBuildInfo メソッドで、LAPACK ライブラリにリンクするための情報を追加するために、ビルド情報メソッドを使用します。

coder.BuildConfig getStdLibInfo メソッドを使用して、リンク時に使用するプラットフォーム固有のファイル拡張子を取得します。

すべて展開する

この例では、updateBuildInfo メソッドを記述して、特定の LAPACK ライブラリへのリンクに必要な情報でビルド情報オブジェクトを更新する方法を説明します。

coder.LAPACKCallback から派生するクラスで、メソッド updateBuildInfo を記述します。この LAPACK コールバック クラスの例をテンプレートとして使用します。

classdef useMyLAPACK < coder.LAPACKCallback
    methods (Static)
        function hn = getHeaderFilename()
            hn = 'mylapacke_custom.h';
        end
        function updateBuildInfo(buildInfo, buildctx)
            buildInfo.addIncludePaths(fullfile(pwd,'include'));
            libName = 'mylapack';
            libPath = fullfile(pwd,'lib');
            [~,linkLibExt] = buildctx.getStdLibInfo();
            buildInfo.addLinkObjects([libName linkLibExt], libPath, ...
                '', true, true);
            buildInfo.addDefines('HAVE_LAPACK_CONFIG_H');
            buildInfo.addDefines('LAPACK_COMPLEX_STRUCTURE');
            buildInfo.addDefines('LAPACK_ILP64'); 
        end
    end
end

mylapack を LAPACK ライブラリの名前で置き換えます。インクルード パスとライブラリ パスを必要に応じて変更します。

ビルド情報のヘッダー ファイルの場所を更新するには、ビルド情報の addIncludePaths メソッドを使用します。

プラットフォーム固有のライブラリ拡張子にアクセスするには、coder.BuildConfig getStdLibInfo メソッドを使用します。

ビルド情報の LAPACK ライブラリの名前と場所を更新するには、ビルド情報の addlinkObjects メソッドを使用します。

コンパイラが構造体として表される複素数データ型のみをサポートしている場合は、次の行を含めます。

buildInfo.addDefines('HAVE_LAPACK_CONFIG_H');
buildInfo.addDefines('LAPACK_COMPLEX_STRUCTURE');

LAPACK ライブラリで使用される整数型を指定しなければなりません。この整数型を指定しないと、結果として不正確な動作やクラッシュが生じる可能性があります。次のいずれかを行います。

  • updateBuildInfo メソッドに次の行を含めます。

    buildInfo.addDefines('HAVE_LAPACK_CONFIG_H');
    buildInfo.addDefines('LAPACK_ILP64');

  • あるいは、LAPACK ライブラリで使用される整数型を直接指定することもできます。たとえば、整数型が long long の場合、updateBuildInfo メソッドに次の行を含めます。

    buildInfo.addDefines('lapack_int=long long');