Компилятор не поддерживается для создания проектов из систем сборки

Проблема

Компилятор не поддерживается для автоматического создания проектов из команд сборки.

Причина

Для автоматического создания проекта из системы сборки, ваше строение компилятора должна быть доступна Polyspace®. Polyspace предоставляет файл строения компилятора только для определенных компиляторов.

Для получения информации о том, какие компиляторы поддерживаются, смотрите Требования к созданию проектов из систем сборки.

Решение

Чтобы включить автоматическое создание проекта для неподдерживаемого компилятора, можно записать собственный файл строения компилятора.

  1. Скопируйте один из существующих файлов строения из polyspaceroot\ polyspace\configure\compiler _ configuration\. Выберите строение, которая наиболее точно соответствует вашему компилятору, используя отображение между файлами строения и именами компиляторов.

  2. Сохраните файл следующим my_compiler.xml. my_compiler может быть именем, которое помогает вам идентифицировать файл.

    Чтобы отредактировать файл, сохраните его вне папки установки. После завершения редактирования необходимо скопировать файл назад в polyspaceroot\ polyspace\configure\compiler _ configuration\.

  3. Отредактируйте содержимое файла, чтобы представлять компилятор. Замените записи между элементами XML соответствующим содержимым.

  4. После сохранения отредактированного XML- файл в polyspaceroot\ polyspace\configure\compiler _ configuration\, создайте проект автоматически с помощью команды build.

    Если вы видите ошибки, например, ошибки компиляции, обратитесь в MathWorks® Техническая поддержка. После трассировки вашей команды build, программное обеспечение компилирует определенные файлы с помощью спецификаций компилятора, обнаруженных из вашего файла строения и команды build. Ошибки компиляции могут указывать на проблемы в файле строения.

    Совет

    Чтобы быстро увидеть, работает ли файл строения компилятора, запустите автоматическую настройку проекта на примере сборки, которая не занимает много времени для завершения. После настройки проекта с файлом строения компилятора можно использовать этот файл для больших сборок.

Элементы файла строения компилятора

В следующей таблице перечислены элементы XML в файле строения компилятора с описанием того, что представляет содержимое элемента.

Элемент XMLОписание содержимогоПример содержимого для GNU® Компилятор C
<compiler_names><name> ... </name><compiler_names>

Имя исполняемого файла компилятора. Этот исполняемый файл преобразует вашу .c файлы в файлы объектов. Можно добавить несколько двоичных имен, каждый в отдельном <name>...</name> элемент. Программа проверяет каждое из указанных имен и использует имя компилятора, для которого она находит совпадение.

Вы не должны задавать двоичный код линкера внутри <name>...</name> элементы.

Если заданное имя присутствует в существующем файле строения компилятора, возникает ошибка. Чтобы избежать ошибки, используйте дополнительную опцию config компилятора my_compiler.xml при трассировке сборки так, чтобы программное обеспечение явным образом использовало файл строения компилятора.

  • gcc

  • gpp

<include_options><opt> ... </opt></include_options>

Опция, которую вы используете вместе с компилятором, чтобы задать включения папок.

Чтобы задать опции, где аргумент немедленно следует за опцией, используйте isPrefix атрибут для opt и установите его равным true.

-I
<system_include_options><opt> ... </opt></system_include_options>

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

Чтобы задать опции, где аргумент немедленно следует за опцией, используйте isPrefix атрибут для opt и установите его равным true.

-isystem
<preinclude_options><opt> ... </opt></preinclude_options>

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

Чтобы задать опции, где аргумент немедленно следует за опцией, используйте isPrefix атрибут для opt и установите его равным true.

-include
<define_options><opt> ... </opt></define_options>

Опция, которая используется с компилятором для предопределения макроса.

Чтобы задать опции, где аргумент немедленно следует за опцией, используйте isPrefix атрибут для opt и установите его равным true.

-D
<undefine_options><opt> ... </opt></undefine_options>

Опция, которую вы используете вместе с компилятором, чтобы отменить предыдущие определения макроса.

Чтобы задать опции, где аргумент немедленно следует за опцией, используйте isPrefix атрибут для opt и установите его равным true.

-U
<semantic_options><opt> ... </opt></semantic_options>

Опции, которые вы используете для изменения поведения компилятора. Эти опции определяют языковые параметры, которым должен соответствовать код.

Можно использовать isPrefix атрибут для задания нескольких опций с одним и тем же префиксом и numArgs атрибут для задания опций с несколькими аргументами. Для образца:

  • Вместо

    <opt>-m32</opt>
    <opt>-m64</opt>
    
    Можно писать <opt isPrefix="true">-m</opt>.

  • Вместо

    <opt>-std=c90</opt>
    <opt>-std=c99</opt>
    
    Можно писать <opt numArgs="1">-std</opt>. Если ваш make-файл использует -std c90 вместо -std=c90, это обозначение также поддерживает это использование.

  • -ansi

  • -std=C90

  • -std=c++11

  • -funsigned-char

<compiler> ... </compiler>

Опция компилятора Polyspace, которая соответствует или тесно соответствует вашему компилятору. Содержимое этого элемента непосредственно преобразуется в опцию, Compiler в файле проекта Polyspace или опций.

Полный список доступных компиляторов см. в разделе Compiler (-compiler).

gnu4.7
<compile_options_list><opt> ... </opt></compile_options_list>Опции, которые вы используете для компиляции исходных файлов без ссылки.-c
<preprocess_options_list><opt> ... </opt></preprocess_options_list>

Опции, которые задают, как ваш компилятор генерирует предварительно обработанный файл.

Можно использовать макрос $(OUTPUT_FILE) если компилятор не позволяет отправлять предварительно обработанный файл в стандартный вывод. Вместо этого он определяет предварительно обработанный файл внутренне.

-E

Для примера $(OUTPUT_FILE) макрос, см. существующий файл строения компилятора cl2000.xml.

<preprocessed_output_file> ... </preprocessed_output_file>

Имя файла, в котором сохранен предварительно обработанный выход.

Можно использовать следующие макросы, когда имя предварительно обработанного выходного файла адаптировано из исходного файла:

  • $(SOURCE_FILE): Имя исходного файла

  • $(SOURCE_FILE_EXT): Расширение исходного файла

  • $(SOURCE_FILE_NO_EXT): Имя исходного файла без расширения

Для образца используйте $(SOURCE_FILE_NO_EXT).pre когда имя файла препроцессора совпадает с именем исходного файла, но с расширением .pre.

Пример этого элемента см. в существующем файле строения компилятора xc8.xml.

<src_extensions><ext> ... </ext></src_extensions>Расширения файлов для исходных файлов.
  • c

  • cpp

  • c++

<obj_extensions><ext> ... </ext></obj_extensions>Расширения файлов для файлов объектов.o
<precompiled_header_extensions> ... </precompiled_header_extensions>Расширения файлов для предварительно скомпилированных заголовков (при наличии).gch
<polyspace_extra_options_list>
   <opt> ... </opt>
   <opt> ... </opt>
</polyspace_extra_options_list>

Дополнительные опции, которые используются для последующего анализа.

Например, чтобы избежать ошибок компиляции в последующем анализе из-за не-ANSI® ключевые слова расширения, введите -D keyword= value, для примера:

<polyspace_extra_options_list> 
    <opt>-D MACRO1</opt> 
    <opt>-D MACRO2=VALUE</opt> 
</polyspace_extra_options_list> 

Для получения дополнительной информации смотрите Preprocessor definitions (-D).

 

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

Выберите файл строения в polyspaceroot\ polyspace\configure\compiler _ configuration\ это больше всего напоминает строение вашего компилятора. Используйте следующую таблицу для сопоставления компиляторов с их файлами строения.

Имя компилятораПродавецXML- Файл
РУКА® ARM Keilarmcc.xml
armclang.xml
Визуальный C++® Microsoft® cl.xml
ЛязгНе применяетсяclang.xml
CodeWarrior® NXPcw_ppc.xml
cw_s12z.xml
cx6808Космическийcx6808.xml
Diab Wind River® diab.xml
gccНе применяетсяgcc.xml
Зелёные Холмы® Программное обеспечение Green Hillsghs_arm.xml
ghs_arm64.xml
ghs_i386.xml
ghs_ppc.xml
ghs_rh850.xml
ghs_tricore.xml
IAR Embedded WorkbenchIARiar.xml
iar-arm.xml
iar-avr.xml
iar-msp430.xml
iar-rh850.xml
iar-rl78.xml
Renesas® Renesas renesas-rh850.xml
renesas-rl78.xml
renesas-rx.xml
УПРАВЛЕНИЕ ЗАДАЧАМИ® Altium® tasking.xml
tasking-166.xml
tasking-850.xml
tasking-arm.xml
Крошечный CНе применяетсяtcc.xml
TM320 и его производные Техасский Instruments™ ti_arm.xml
ti_c28x.xml
ti_c6000.xml
ti_msp430.xml
xc8 (PIC)Микрочипxc8.xml