Для некоторых приложений можно хотеть управлять аспектами процесса сборки, которые происходят после генерации исходного кода C/C + +, но до компиляции. Для примера можно задать опций компилятора или линкера. Вы можете получить и изменить все сгенерированные исходные файлы, чтобы добавить отказ от авторских прав. Можно управлять процессом сборки различными способами. Настройте процесс сборки путем:
Использование функции coder.updateBuildInfo
.
Использование методов RTW.BuildInfo
объект.
Изменение информации о сборке при помощи coder.ExternalDependency
класс.
Изменение информации о сборке с помощью скрипта или функции, выполняемой PostCodeGenCommand
свойство configuration. Этот скрипт или функция называется командой генерации пост-кода.
Все эти подходы работают, изменяя make-файл, который генерируется и используется для создания вашего кода. В качестве наилучшей практики рекомендуется использовать первые три подхода, coder.updateBuildInfo
, RTW.BuildInfo
, и coder.ExternalDependency
. Эти подходы позволяют вам предварительно сконфигурировать MATLAB® код с требуемой информацией о сборке. Кроме того, команда генерации пост-кода может обеспечить дополнительный, сильно настраиваемый подход, основанный на независимой функции или скрипте.
The coder.ExternalDependency
класс и команда post-code-generation обеспечивают доступ к информационному объекту сборки, buildInfo
. Можно использовать методы построения информации о buildInfo
конфигурирование информации о проекте, сборке и зависимостях. MATLAB Coder™ создает buildInfo
из RTW.BuildInfo классов
в начале сборки. Этот объект хранится в MAT-файле buildInfo.mat
и сохранен в папке сборки.
После генерации кода вы можете получить доступ к объекту информации о сборке, загрузив его из buildInfo.mat
. Не путайте информационный объект сборки с объектом строения сборки, coder.BuildConfig
, который обеспечивает определенную функциональность для настройки сборки в coder.ExternalDependency
класс.
RTW.BuildInfo
МетодыДля доступа или записи данных в объект информации о сборке используйте RTW.BuildInfo
методы. Используя эти методы, можно изменить:
Опции компилятора
Опции Linker
Определения идентификаторов препроцессора
Исходные файлы и пути
Включите файлы и пути
Предварительно скомпилированные внешние библиотеки
Опции упаковки.
Смотрите код пакета для других сред разработки.
Чтобы вызвать методы, используйте синтаксис:
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
ФункцияThe coder.updateBuildInfo
функция обеспечивает удобный способ настроить процесс сборки из вашего кода MATLAB. Для получения дополнительной информации и примеров смотрите coder.updateBuildInfo
и RTW.BuildInfo
страницы с описанием.
coder.ExternalDependency
КлассКогда вы работаете с внешним кодом интегрирования или у вас есть несколько функций, которые используют одну и ту же информацию о сборке, настройте процесс сборки с помощью coder.ExternalDependency
класс. The coder.ExternalDependency
класс предоставляет доступ к объекту и методам информации о сборке. Для получения дополнительной информации и примеров смотрите Разработка интерфейса для внешнего кода C/C + + и coder.ExternalDependency
страница с описанием.
Как лучшая практика, настройте процесс сборки с помощью первых двух подходов, coder.updateBuildInfo
и coder.ExternalDependency
. Третьим подходом, который обеспечивает дополнительную гибкость, является команда после генерации кода. Команда генерации пост-кода является функцией или скриптом, выполняемым PostCodeGenCommand
свойство объекта строения. Установите команду с помощью объекта строения генерации кода (coder.MexCodeConfig
, coder.CodeConfig
или coder.EmbeddedCodeConfig
).
Формат команды | Результат |
---|---|
Скрипт | Скрипт может получить доступ к имени проекта (функция верхнего уровня) и информации о сборке непосредственно. |
Функция | Функция может получить имя проекта и информацию о сборке как аргументы. |
Чтобы написать команду post code-generation как скрипт, установите 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.
Если ваша команда post-code-generation вызывает пользовательские функции, убедитесь, что функции указаны в пути MATLAB. Если процесс сборки не может найти функцию, которую вы используете в своей команде, процесс прекращает работать.
coder.CodeConfig
| coder.EmbeddedCodeConfig
| coder.ExternalDependency
| coder.MexCodeConfig
| coder.updateBuildInfo