Сгенерируйте пользовательский файл и функциональные баннеры для кода C/C++

Когда вы генерируете C и Код С++ из кода MATLAB®, можно использовать файл шаблона генерации кода (CGT), чтобы задать пользовательский:

  • Баннеры файла

  • Функциональные баннеры

  • Трейлеры файла

  • Комментарии перед секциями кода

Этот пример показывает, как можно создать собственный файл CGT и настроить его, чтобы сгенерировать собственный файл и функциональные баннеры.

  1. Создайте локальную копию файла CGT по умолчанию для MATLAB Coder™ и переименуйте его. Файлом CGT по умолчанию является matlabcoder_default_template.cgt в папке matlabroot/toolbox/coder/matlabcoder/templates/.

  2. Сохраните копию в папке, которая является за пределами структуры папок MATLAB, но на пути MATLAB. При необходимости добавьте папку в путь MATLAB. Если вы намереваетесь использовать файл CGT с пользовательской целью, определить местоположение файла CGT в папке под вашей целевой корневой папкой. Если файл не находится на пути MATLAB, задайте полный путь к файлу при добавлении файла в настройку.

  3. Просмотрите шаблон по умолчанию и сгенерированный вывод. Например, вот раздел File Banner по умолчанию:

    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %% Custom File Banner section (optional)
    %% Customize File banners by using either custom tokens or the following
    %% predefined tokens: 
    %% %<FileName>, %<MATLABCoderVersion>, %<EmbeddedCoderVersion>
    %% %<SourceGeneratedOn>, %<HardwareSelection>, %<OutputType>
    %%
    %% You can also use "custom tokens" in all of the sections below. See the 
    %% documentation center for more details. 
    %%
    <FileBanner style="classic">
    File: %<FileName>
    
    MATLAB Coder version           : %<MATLABCoderVersion>
    C/C++ source code generated on : %<SourceGeneratedOn>
    </FileBanner>
    Когда вы генерируете код с помощью этого значения по умолчанию, баннер файла выглядит подобным этому баннеру файла:
    /*
     * File: coderand.c
     *
     * MATLAB Coder version            : 2.7
     * C/C++ source code generated on  : 06-Apr-2014 14:34:15
     */
    

  4. Отредактируйте свою локальную копию файла CGT. Можно изменить значения по умолчанию и добавить собственные лексемы. Например, вот раздел File Banner со стилем, измененным на box и пользовательский маркерный myCustomToken:

    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %% Custom File Banner section (optional)
    %% Customize File banners by using either custom tokens or the following
    %% predefined tokens: 
    %% %<FileName>, %<MATLABCoderVersion>, %<EmbeddedCoderVersion>
    %% %<SourceGeneratedOn>, %<HardwareSelection>, %<OutputType>
    %%
    %% You can also use "custom tokens" in all of the sections below. See the 
    %% documentation center for more details. 
    %%
    <FileBanner style="box">
    File: %<FileName>
    
    My custom token                : %<myCustomToken>
    
    MATLAB Coder version           : %<MATLABCoderVersion>
    C/C++ source code generated on : %<SourceGeneratedOn>
    </FileBanner>

    Для получения дополнительной информации смотрите Файлы Шаблона Генерации кода для кода MATLAB.

  5. Создайте объект настройки для генерации статической библиотеки C для целевого процессора.

    % Create configuration object for an embedded target
    cfgObj = coder.config('lib','ecoder',true); 
    

  6. Создайте объект MATLABCodeTemplate из своего файла CGT и добавьте его в объект настройки.

    % Specify the custom CGT file
    CGTFile = 'myCGTFile.cgt';
    % Use custom template
    cfgObj.CodeTemplate = coder.MATLABCodeTemplate(CGTFile); 
    
  7. Присвойте значения для пользовательских лексем, которые вы добавили в шаблон. Например, присвойте значение 'myValue' лексеме myCustomToken, которую вы добавили на предыдущем шаге.

    cfgObj.CodeTemplate.setTokenValue('myCustomToken','myValue');

  8. Убедитесь, что генерация комментариев включена. В противном случае генератор кода не производит файл или функциональные баннеры.

    cfgObj.GenerateComments=true;

  9. Сгенерируйте код с помощью объекта настройки, что вы создали.

    codegen -config cfgObj coderand

  10. Просмотрите изменения в сгенерированном баннере файла. Например, вот баннер файла для coderand.c с помощью индивидуально настраиваемого файла CGT:

    /******************************************************************************/
    /* File: coderand.c                                                           */
    /*                                                                            */
    /* My custom token                : myValue                                   */
    /*                                                                            */
    /* MATLAB Coder version           : 2.7                                       */
    /* C/C++ source code generated on : 06-Apr-2014 14:42:55                      */
    /******************************************************************************/
    

Изменения в файле CGT не влияют на сгенерированный код, если вы не создаете объект MATLABCodeTemplate из измененного файла CGT, и затем добавляете его в объект настройки. Если вы изменяете Файл CGT, myCGTFile.cgt, используемый в предыдущем примере, необходимо повторить эти шаги:

  1. Создайте объект MATLABCodeTemplate из myCGTFile.cgt и добавьте его в объект настройки.

    CGTFile = 'myCGTFile.cgt';
    cfgObj.CodeTemplate = coder.MATLABCodeTemplate(CGTFile); 
    
  2. Присвойте значение 'myValue' лексеме myCustomToken.

    cfgObj.CodeTemplate.setTokenValue('myCustomToken','myValue');

  3. Сгенерируйте код.

    codegen -config cfgObj coderand

Смотрите также

Похожие темы