Для определенных приложений вы можете хотеть управлять аспектами процесса сборки, которые происходят после генерации исходного кода C/C++, но перед компиляцией. Например, можно задать опции компоновщика или компилятор. Можно получить и изменить все сгенерированные исходные файлы, чтобы добавить правовую оговорку авторского права. Можно управлять процессом сборки во множестве путей. Настройте процесс сборки:
Используя функцию coder.updateBuildInfo
.
Используя методы RTW.BuildInfo
объект.
Изменение информации о сборке при помощи coder.ExternalDependency
класс.
Изменение информации о сборке со скриптом или функцией, выполняемой PostCodeGenCommand
свойство настройки. Этот скрипт или функция называются командой постгенерации кода.
Все эти подходы работают путем изменения make-файла, который генерируется и используется, чтобы создать код. Как лучшая практика, рекомендуется использовать первые три подхода, coder.updateBuildInfo
, RTW.BuildInfo
, и coder.ExternalDependency
. Эти подходы позволяют вам предварительно сконфигурировать свой MATLAB® код с информацией сборки, которую вы запрашиваете. В качестве альтернативы команда генерации почтового индекса может обеспечить дополнительный, высоконастраиваемый подход, базирующийся вокруг независимой функции или скрипта.
coder.ExternalDependency
класс и команда постгенерации кода обеспечивают доступ к информационному объекту сборки, buildInfo
. Можно использовать методы информации о сборке на buildInfo
сконфигурировать проект, сборку и информацию о зависимостях. MATLAB Coder™ создает buildInfo
от класса RTW.BuildInfo
в начале сборки. Этот объект хранится в MAT-файле buildInfo.mat
и сохраненный в папке сборки.
После генерации кода можно получить доступ к информационному объекту сборки путем загрузки его от buildInfo.mat
. Не путайте информационный объект сборки с объектом конфигурации сборки, coder.BuildConfig
, который обеспечивает определенную функциональность для конфигурирования сборки в coder.ExternalDependency
класс.
RTW.BuildInfo
МетодыДля доступа или записывают данные к информационному объекту сборки, используют RTW.BuildInfo
методы. Используя эти методы можно изменить:
Параметры компилятора
Опции компоновщика
Определения идентификатора препроцессора
Исходные файлы и пути
Включайте файлы и пути
Предварительно скомпилированные внешние библиотеки
Упаковочные опции.
Чтобы вызвать методы, используйте синтаксис:
method_name(buildInfo,input_arg1,...,input_argN)
В качестве альтернативы можно войти:
buildInfo.method_name(input_arg1,...,input_argN)
Чтобы использовать информационный объект сборки после, генерация кода завершена, загрузите buildInfo.mat
файл от вашего сгенерированного кода. Например:
load(fullfile('.','raspberrypi_generated_code','buildInfo.mat')); packNGo(buildInfo, 'fileName','copy_to_raspberrypi');
coder.updateBuildInfo
Функцияcoder.updateBuildInfo
функция обеспечивает удобный способ настроить процесс сборки из вашего кода MATLAB. Для получения дополнительной информации и примеры, смотрите coder.updateBuildInfo
и RTW.BuildInfo
страницы с описанием.
coder.ExternalDependency
КлассКогда вы работаете с внешней интеграцией кода, или у вас есть несколько функций, которые используют ту же информацию о сборке, настраивают процесс сборки при помощи coder.ExternalDependency
класс. coder.ExternalDependency
класс обеспечивает доступ к информационному объекту сборки и методам. Для получения дополнительной информации и примеры, смотрите, Разрабатывают Интерфейс для Внешнего Кода C/C++ и coder.ExternalDependency
страница с описанием.
Как лучшая практика, настройте свой процесс сборки при помощи первых двух подходов, coder.updateBuildInfo
и coder.ExternalDependency
. Третий подход, который обеспечивает дополнительную гибкость, является командой постгенерации кода. Команда постгенерации кода является функцией или скриптом, выполняемым PostCodeGenCommand
свойство объекта настройки. Установите команду при помощи своего объекта настройки генерации кода (coder.MexCodeConfig
, coder.CodeConfig
или coder.EmbeddedCodeConfig
).
Формат команды | Результат |
---|---|
Скрипт | Скрипт может получить доступ к проекту (функция верхнего уровня) имя и информация о сборке непосредственно. |
Функция | Функция может получить название проекта и информацию о сборке в качестве аргументов. |
Чтобы записать команду генерации кода сообщения как скрипт, установите PostCodeGenCommand
к имени скрипта. Можно получить доступ к названию проекта в переменной projectName
и RTW.BuildInfo
объект в переменной buildInfo
. В командной строке, введите:
cfg = coder.config('lib'); cfg.PostCodeGenCommand = 'ScriptName';
Когда вы задаете команду как функцию, можно задать произвольное число входных параметров. Если вы хотите получить доступ к названию проекта, включайте projectName
в качестве аргумента. Если вы хотите изменить или получить доступ к информации о сборке, добавьте buildInfo
в качестве аргумента. В командной строке, введите:
cfg = coder.config('lib'); cfg.PostCodeGenCommand = 'FunctionName(projectName, buildInfo)';
Например, рассмотрите функциональный setbuildargs
это берет информационный объект сборки в качестве параметра и добавляет опции компоновщика при помощи addLinkFlags
метод.
function setbuildargs(buildInfo) % The example being compiled requires pthread support. % The -lpthread flag requests that the pthread library be included % in the build linkFlags = {'-lpthread'}; buildInfo.addLinkFlags(linkFlags);
Чтобы использовать эту функцию в качестве команды постгенерации кода, создайте объект настройки. Используйте этот объект настройки, когда вы сгенерируете код. Например:
cfg = coder.config('dll'); cfg.PostCodeGenCommand = 'setbuildargs(buildInfo)'; codegen -config cfg foo
Установить команду постгенерации кода из приложения MATLAB Coder:
Чтобы открыть диалоговое окно Generate, на странице Generate Code, кликают по стреле Generate.
Нажмите More Settings.
На вкладке Custom Code, установленной параметр Post-code-generation command.
Если ваша команда постгенерации кода вызывает пользовательские функции, убедитесь, что функции находятся на пути MATLAB. Если процесс сборки не может найти функцию, которую вы используете в своей команде, сбоях процесса.
coder.MexCodeConfig
| coder.CodeConfig
| coder.EmbeddedCodeConfig
| coder.updateBuildInfo
| coder.ExternalDependency