coder.LAPACKCallback.updateBuildInfo

Класс: coder.LAPACKCallback
Пакет: кодер

Обновите информацию о сборке для соединения с определенной библиотекой LAPACK

Синтаксис

coder.LAPACKCallback.updateBuildInfo(buildInfo, buildctx)

Описание

coder.LAPACKCallback.updateBuildInfo(buildInfo, buildctx) обновляет информационный объект сборки buildInfo с информацией, запрошенной для процесса сборки, чтобы соединиться с определенной библиотекой LAPACK.

coder.LAPACKCallback абстрактный класс для определения класса коллбэка LAPACK. Класс коллбэка LAPACK задает библиотеку LAPACK и заголовочный файл LAPACKE, чтобы использовать для вызовов LAPACK в коде, сгенерированном из кода MATLAB®. Во время генерации кода, если вы задаете класс коллбэка LAPACK для определенных вызовов функции линейной алгебры, генератор кода производит вызовы LAPACK в автономном коде.

Входные параметры

buildInfo

Создайте информационный объект. После генерации кода этот объект содержит стандартный проект, опцию сборки и информацию о зависимостях. В updateBuildInfo метод, чтобы добавить информацию для соединения с библиотекой LAPACK, использует методы информации о сборке.

buildctx

coder.BuildConfig объект. Используйте 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');