exponenta event banner

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

Проблема

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

Причина

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

Сведения о том, какие компиляторы поддерживаются, см. в разделе Требования к созданию проектов из Build Systems.

Решение

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

  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> элементы.

Если указанное имя присутствует в существующем файле конфигурации компилятора, возникает ошибка. Чтобы избежать ошибки, используйте дополнительный параметр -compiler-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>. Если ваш makefile использует -std c90 вместо -std=c90, эта нотация также поддерживает это использование.

  • -ansi

  • -std=C90

  • -std=c++11

  • -funsigned-char

<compiler> ... </compiler>

Параметр компилятора Polyspace, соответствующий или точно соответствующий компилятору. Содержимое этого элемента непосредственно переводится в компилятор параметров в проекте 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 ®ARM Keilarmcc.xml
armclang.xml
Visual 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 для встраиваемых системIARiar.xml
iar-arm.xml
iar-avr.xml
iar-msp430.xml
iar-rh850.xml
iar-rl78.xml
Ренесас ® Renesas renesas-rh850.xml
renesas-rl78.xml
renesas-rx.xml
ЗАДАЧИ ® Альтиум ®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