blob: d13df73db2334f87ace7aaf414e1dc5a16f7bd88 [file] [log] [blame]
//
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.
//
= Использование дескрипторов наборов средств C/C++ - Практическое руководство по IDE NetBeans
:jbake-type: tutorial
:jbake-tags: tutorials
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: Использование дескрипторов наборов средств C/C++ - Практическое руководство по IDE NetBeans - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, Использование дескрипторов наборов средств C/C++ - Практическое руководство по IDE NetBeans
_Составитель: link:mailto:alexander.simon@oracle.com[+_Александр Саймон (Alexander Simon)_+]
Март 2014 г._ [Номер версии: V8.0-1]
image::images/netbeans-stamp.png[title="Содержимое этой страницы применимо к IDE NetBeans 8.0"]
*Для работы с этим учебным курсом требуется программное обеспечение, указанное ниже.*
|===
|Программное обеспечение |Требуемая версия
|IDE NetBeans (включая поддержку C/C++) |link:https://netbeans.org/downloads/index.html[+Версия 8.0+]
|Комплект для разработчика на языке Java (JDK) |link:http://www.oracle.com/technetwork/java/javase/downloads/index.html[+Версия 7 или 8+]
|===
Дополнительные сведения о загрузке и установке необходимого программного обеспечения см. в разделах link:../../../community/releases/80/install.html[+Инструкции по установке IDE NetBeans+] и link:../../../community/releases/80/cpp-setup-instructions.html[+Настройка IDE NetBeans для C/C++/Fortran+].
== Введение
Это практическое руководство содержит инструкции по изменению существующих наборов средств и созданию собственной версии набора средств на основе существующего в IDE NetBeans 8.0.
Показанный пример относится к набору средств GNU для Oracle Solaris и Linux, но общие принципы применимы также для Windows и Mac. Используя информацию в этом руководстве, вы научитесь делать следующее:
* Менять флаги компиляторов, которые IDE NetBeans по умолчанию использует для компиляции файлов C/C++
* Добавлять компиляторы, которые не поддерживаются в среде IDE
== Наборы средств
В набор средств входят набор компиляторов, утилита make и отладчик. Набор средств определяется в IDE с помощью _дескриптора наборов инструментов_. При каждой компиляции, создании или отладке кода IDE NetBeans запускает исполняемый файл, описанный в дескрипторе наборов средств для набора средств, заданного в настройках проекта. Функции 'Помощь при работе с кодом' используют пути include и макросы из дескриптора наборов средств.
Дескриптор набора средств - это XML-файл, расположенный в модуле ``_IDE_HOME_/cnd/modules/org-netbeans-modules-cnd-toolchain.jar`` , который находится в папке ``org/netbeans/modules/cnd/toolchain/resources/toolchaindefinition/`` . Вносить изменения в исходные XML-файлы дескриптора средств IDE не рекомендуется.
Эта статья содержит инструкции по созданию дубликатов дескрипторов средств в собственном каталоге пользователя NetBeans, доступном для редактирования. IDE будет использовать данные дескрипторов наборов средств, расположенных в вашем каталоге пользователя, вместо исходных версий.
== Наборы инструментов, предоставленные сообществом
Некоторые подключаемые модули для наборов средств разработаны участниками сообщества NetBeans:
* link:http://plugins.netbeans.org/plugin/36176/cuda-plugin[+Cuda+]
* link:http://plugins.netbeans.org/plugin/27033/msp430-toolchain[+TI msp430 microcontroller toolchain+]
* link:http://plugins.netbeans.org/plugin/42519/[+Visual Studio+]
Напоминаем, что эти подключаемые модули официально не поддерживаются, но приводятся со справочной целью, так как могут послужить в качестве основы для создания ваших собственных подключаемых модулей.
Пользователям Windows также будет интересна статья одного из участников сообщества NetBeans: link:http://minghuasweblog.wordpress.com/2012/09/27/netbeans-setup-and-gnu-cross-toolchain-configuration-for-arm-developmen/[+Настройка NetBeans и общие настройки наборов средств GNU для разработки ARM+].
== Изменение дескрипторов наборов средств
Изменение дескрипторов наборов средств представляет собой непростую задачу, поскольку в IDE NetBeans отсутствует графический пользовательский интерфейс для изменения дескрипторов. В этом разделе описывается создание 'теневых' копий дескрипторов наборов инструментов, которые можно изменить, если требуется, чтобы в среде IDE использовались другие средства.
1. Завершите работу среды IDE, если она запущена.
2. Отредактируйте файл ``_IDE-HOME_/etc/netbeans.conf`` , где ``_IDE-HOME_`` - каталог установки NetBeans.
3. Добавьте следующий флаг в запись ``netbeans_default_options`` :
[source,java]
----
-J-Dcnd.toolchain.personality.create_shadow=true
----
[start=4]
. Запустите среду IDE, выберите "Сервис" > "Параметры", затем в верхней панели окна параметров выберите "C/C++".
IDE создает 'теневые' версии дескрипторов наборов средств в каталоге пользователя NetBeans:
_userdir_
[source,java]
----
/config/CND/ToolChain
----
Местоположение каталога пользователя NetBeans зависит от операционной системы. Возможные варианты местоположения каталога ``_userdir_/config/CND/ToolChain`` :
* Windows: ``C:\Documents and Settings\_username_\Application Data\NetBeans\_version_\config\CND\ToolChain``
* Mac: ``/Users/_username_/Library/Application Support/NetBeans/_version_/config/CND/ToolChain``
* Linux и Solaris: ``/home/_username_/.netbeans/_version_/config/CND/ToolChain``
Список дескрипторов должен быть аналогичен следующему:
[source,java]
----
CLang.xml SunStudio.xml
CLang_mac.xml SunStudio_10.xml
CLang_solaris.xml SunStudio_11.xml
Cygwin.xml SunStudio_12.1_solaris-sparc.xml
Cygwin_4.x.xml SunStudio_12.1_solaris-x86_linux.xml
GNU.xml SunStudio_12.2_linuxCompatGNU.xml
GNU_mac.xml SunStudio_12.2_solaris-sparc.xml
GNU_solaris.xml SunStudio_12.2_solaris-x86_linux.xml
Intel.xml SunStudio_12.3_linuxCompatGNU.xml
Interix.xml SunStudio_12.3_solaris-sparc.xml
MinGW.xml SunStudio_12.3_solaris-x86_linux.xml
MinGW_TDM.xml SunStudio_12.xml
OSS_linuxCompatGNU.xml SunStudio_8.xml
OSS_solaris-sparc.xml SunStudio_9.xml
OSS_solaris-x86_linux.xml WinAVR.xml
OracleSolarisStudio.xml
----
Вы можете изменить дескриптор для используемого набора средств. Например, если вы используете средства GNU в ОС Solaris, необходимо отредактировать файл ``GNU_solaris.xml`` ; если вы используете MinGW в ОС Windows, необходимо отредактировать файл ``MinGW.xml`` .
Сведения о тегах, используемых в XML-файлах дескриптора, см. в разделе <<details,Подробно об XML-файлах набора средств>>. Значения тегов можно изменить. В этом случае соответствующим образом изменится функционирование средств в IDE.
Дескрипторы, находящиеся в этом каталоге, имеют более высокий приоритет по сравнению с официальными версиями в каталоге _IDE-HOME_. Если вы не хотите, чтобы в среде IDE использовались некоторые дескрипторы средств, удалите их из своего каталога пользователя.
[start=5]
. Удалите флаг ``-J-Dcnd.toolchain.personality.create_shadow=true`` из файла ``_IDE-HOME_/etc/netbeans.conf`` , чтобы в среде IDE больше не создавались теневые копии дескрипторов.
[start=6]
. Перед использованием измененного дескриптора средств необходимо перезапустить IDE.
== [[Создание пользовательского набора средств]]
Этот раздел содержит инструкции по созданию набора средств на основе набора средств GNU. В новом наборе средств будут изменены флаги компилятора для отладки. В примере показаны этапы создания нового модуля NetBeans с новым набором средств. Это модуль позволяет совместно использовать набор средств, а также использовать набор средств в других экземплярах IDE.
Для получения общих сведений о создании модулей NetBeans см. раздел link:http://platform.netbeans.org/tutorials/nbm-google.html[+Руководство по началу работы с подключаемыми модулями в среде NetBeans+].
*Чтобы создать собственный набор средств:*
1. Убедитесь, что в состав установленного экземпляра NetBeans входит модуль NetBeans Plugin Development.
Выберите Сервис > Подключаемые модули и перейдите на вкладку 'Установленные'. Если модуль разработки подключаемых модулей NetBeans не установлен, перейдите на вкладку "Доступные подключаемые модули" и установите модуль. Его можно быстро найти путем ввода текста "plugin" в окне поиска.
[start=2]
. Создайте новый модуль NetBeans путем выбора "Файл" > "Создать проект". На странице "Выбор проекта" в мастере создания нового проекта выберите категорию "Модули NetBeans" и в первом шаге мастера укажите проект "Модуль". Нажмите кнопку "Далее".
[start=3]
. На странице "Имя и местоположение" введите имя проекта, например, ``mytoolchain`` , а в остальных полях оставьте значения по умолчанию. Нажмите кнопку "Далее".
[start=4]
. На странице 'Основные настройки модуля' в поле 'Основа имени кода ' введите ``org.myhome.mytoolchain`` . Это имя определяет уникальный строковый ресурс для идентификации создаваемого модуля. Основа имени кода также используется в качестве основного пакета модуля.
[start=5]
. Не устанавливайте флажок 'Создать пакет OSGi', так как в этом примере будет использоваться стандартная система модулей NetBeans, а не OSGi.
[start=6]
. Нажмите кнопку "Готово". IDE создает новый проект с именем mytoolchain.
[start=7]
. На вкладке 'Проекты' щелкните узел проекта mytoolchain правой кнопкой мыши и выберите Создать > Другое.
[start=8]
. В мастере создания файлов выберите категорию 'Разработка модулей' и тип файла 'Слой XML', затем нажмите 'Далее' и 'Готово'.
IDE создает файл ``layer.xml`` в структуре узла 'Исходные пакеты' внутри основного пакета ``org.myhome.mytoolchain`` и открывает файл ``layer.xml`` в редакторе.
[start=9]
. Если файл содержит тег ``<filesystem/>`` , замените его парными тегами ``filesystem`` : ``<filesystem>``
[source,xml]
----
``</filesystem>``
----
[start=10]
. Скопируйте и вставьте следующий текст в файл ``layer.xml`` внутри тега ``filesystem`` :
[source,xml]
----
<folder name="CND">
<folder name="Tool">
<file name="GNU_tuned_flavor" url="toolchain/GNU_tuned_flavor.xml">
<attr name="extends" stringvalue="GNU_flavor"/>
</file>
<file name="GNU_tuned_cpp" url="toolchain/GNU_tuned_cpp.xml">
<attr name="extends" stringvalue="GNU_cpp"/>
</file>
</folder>
<folder name="ToolChains">
<folder name="GNU_tuned">
<attr name="position" intvalue="5000"/>
<attr name="SystemFileSystem.localizingBundle" stringvalue="org.myhome.mytoolchain.Bundle"/>
<file name="flavor.shadow">
<attr name="originalFile" stringvalue="CND/Tool/GNU_tuned_flavor"/>
</file>
<file name="c.shadow">
<attr name="originalFile" stringvalue="CND/Tool/GNU_c"/>
</file>
<file name="cpp.shadow">
<attr name="originalFile" stringvalue="CND/Tool/GNU_tuned_cpp"/>
</file>
<file name="fortran.shadow">
<attr name="originalFile" stringvalue="CND/Tool/GNU_fortran"/>
</file>
<file name="assembler.shadow">
<attr name="originalFile" stringvalue="CND/Tool/GNU_assembler"/>
</file>
<file name="scanner.shadow">
<attr name="originalFile" stringvalue="CND/Tool/GNU_scanner"/>
</file>
<file name="linker.shadow">
<attr name="originalFile" stringvalue="CND/Tool/GNU_linker"/>
</file>
<file name="make.shadow">
<attr name="originalFile" stringvalue="CND/Tool/GNU_make"/>
</file>
<file name="debugger.shadow">
<attr name="originalFile" stringvalue="CND/Tool/GNU_debugger"/>
</file>
<file name="qmake.shadow">
<attr name="originalFile" stringvalue="CND/Tool/GNU_qmake"/>
</file>
<file name="cmake.shadow">
<attr name="originalFile" stringvalue="CND/Tool/GNU_cmake"/>
</file>
</folder>
</folder>
</folder>
----
[start=11]
. Откройте файл ``Bundle.properties`` и добавьте следующую строку:
``CND/ToolChains/GNU_tuned=My GNU Tuned Tool Collection``
[start=12]
. Создайте подпакет ``toolchain`` . Для этого щелкните правой кнопкой мыши пакет ``org.myhome.mytoolchain`` в структуре узла 'Исходные пакеты' и выберите Создать > Пакет Java. Замените заданное по умолчанию имя пакета ``newpackage`` на ``toolchain`` и нажмите 'Готово'. IDE создает подпакет ``org.myhome.mytoolchain.toolchain`` .
[start=13]
. Создайте новый файл. Щелкните правой кнопкой мыши подпакет ``org.myhome.mytoolchain.toolchain`` и выберите Создать > Пустой файл. Назовите файл ``GNU_tuned_flavor.xml`` и нажмите 'Готово'.
Если в меню отсутствует пункт 'Пустой файл', выберите 'Другие'. Затем в мастере создания файлов выберите категорию 'Другие', тип файла 'Пустой файл' и нажмите 'Далее'.
Этот файл является дескриптором для нового набора средств.
[start=14]
. Скопируйте следующий текст в ``GNU_tuned_flavor.xml`` :
[source,xml]
----
<?xml version="1.0" encoding="UTF-8"?>
<toolchaindefinition xmlns="https://netbeans.org/ns/cnd-toolchain-definition/1">
<toolchain name="GNU_tuned_flavor" display="GNU_tuned" family="GNU" qmakespec="${os}-g++"/>
<platforms stringvalue="linux,sun_intel,sun_sparc"/>
</toolchaindefinition>
----
[start=15]
. Создайте еще один файл. Щелкните правой кнопкой мыши подпакет ``org.myhome.mytoolchain.toolchain`` и выберите Создать > Пустой файл. Назовите файл ``GNU_tuned_cpp.xml`` и нажмите кнопку Next ("Далее").
[start=16]
. Скопируйте следующий текст в ``GNU_tuned_cpp.xml`` :
[source,xml]
----
<?xml version="1.0" encoding="UTF-8"?>
<toolchaindefinition xmlns="https://netbeans.org/ns/cnd-toolchain-definition/1">
<cpp>
<compiler name="g++"/>
<development_mode>
<fast_build flags=""/>
<debug flags="-g3 -gdwarf-2" default="true"/>
<performance_debug flags="-g -O"/>
<test_coverage flags="-g"/>
<diagnosable_release flags="-g -O2"/>
<release flags="-O2"/>
<performance_release flags="-O3"/>
</development_mode>
</cpp>
</toolchaindefinition>
----
Обратите внимание на установленные флаги отладки -g3 и -gdwarf-2, которые отличаются от флагов, установленных в описании набора средств GNU по умолчанию.
Дерево проекта должно выглядеть следующим образом:
image::images/project.png[title="Дерево проектов"]
Папки 'Тест модуля' могут отсутствовать.
[start=17]
. В окне 'Проекты' щелкните правой кнопкой мыши узел проекта ``mytoolchain`` и выберите 'Выполнить'. В новом экземпляре среды IDE будет создан и установлен модуль, представляющий собой целевую платформу по умолчанию для модулей. Откроется целевая платформа для тестирования нового модуля.
[start=18]
. В выполняемом модуле выберите "Сервис" > "Параметры", затем в верхней панели окна параметров выберите "C/C++" и перейдите на вкладку "Средства сборки".
[start=19]
. Если новый набор средств (GNU_tuned) не отображается, нажмите кнопку "Восстановить параметры по умолчанию". В запросе на повторный поиск в среде нажмите кнопку "Да" для продолжения работы.
В среде IDE появится новый набор средств:
image::images/options.png[title="Панель 'Параметры'"]
[start=20]
. Создайте новый пример проекта C/C++ ``Welcome`` путем выбора "Файл" > "Создать проект" > "Примеры" > "C/C++" > "Welcome".
[start=21]
. Щелкните правой кнопкой узел проекта и выберите команду "Свойства". В диалоговом окне "Свойства проекта" выберите узел "Сборка", укажите набор средств GNU_tuned, затем нажмите кнопку "OK" .
[start=22]
. Выполните сборку проекта. Убедитесь, что для компилятора установлены флаги ``-g3 -gdwarf-2``
[source,java]
----
g++ -c -g3 -gdwarf-2 -MMD -MP -MF build/Debug/GNU_tuned-Solaris-x86/welcome.o.d -o build/Debug/GNU_tuned-Solaris-x86/welcome.o welcome.cc
----
[start=23]
. В диалоговом окне "Свойства проекта" выберите набор средств GNU и нажмите кнопку "ОК".
[start=24]
. Выполните повторную сборку проекта и сравните строку компиляции со строкой в окне вывода:
[source,java]
----
g++ -c -g -MMD -MP -MF build/Debug/GNU-Solaris-x86/welcome.o.d -o build/Debug/GNU-Solaris-x86/welcome.o welcome.cc
----
Как видите, набор средств GNU_tuned содержит другие флаги компилятора для отладки, режима разработки в компиляторе GNU.
Для использования нового модуля для набора средств GNU_tuned в стандартной среде можно создать двоичный файл (файл .nbm) и добавить его в качестве подключаемого модуля:
1. Щелкните правой кнопкой мыши проект модуля mytoolchain и выберите "Создать NBM". В подкаталоге сборки проекта будет создан файл .nbm, который также отображается на вкладке файлов.
2. Выберите "Сервис" > "Подключаемые модули", затем в диалоговом окне "Подключаемые модули" перейдите на вкладку "Загрузки".
3. Нажмите кнопку "Добавить подключаемые модули", перейдите к каталогу сборки, выберите модуль файла .nbm и нажмите кнопку "Открыть". Подключаемый модуль будет добавлен в список на вкладке "Загрузки".
4. Для выбора модуля установите флажок на вкладке "Загрузки", затем нажмите кнопку "Установить". Откроется мастер установки подключаемых модулей NetBeans.
5. Нажимайте кнопку "Далее" для перехода к последующим действиям мастера вплоть до последнего действия.
6. Перезапустите среду IDE, выберите "Сервис" > "Параметры", затем в верхней панели окна параметров нажмите "С/С++" и перейдите на вкладку "Средства сборки".
7. Если новый набор средств (GNU_tuned) не отображается, нажмите 'Восстановить параметры по умолчанию'. В запросе на повторный поиск в среде нажмите кнопку "Да" для продолжения работы.
=== Дополнительные сведения о файле XML набора средств
В этом разделе описывается большая часть наиболее важных тегов в файле XML набора средств.
Схему всех поддерживаемых тегов и атрибутов xml-файлов набора средств можно посмотреть в файле ``toolchaindefinition.xsd`` в link:http://hg.netbeans.org/cnd-main[+дереве исходного кода IDE NetBeans+].
==== Теги определения набора средств
|===
|Теги |Атрибуты |Описание
|инструментальная цепочка |Имя набора средств
|"name" имя |Имя набора средств
|отображение |Отображаемое имя набора средств
|семейство |Имя группы набора средств
|платформы |Поддерживаемые платформы
|stringvalue |Перечень поддерживаемых платформ, разделенных запятой
Допустимые значения:
* Linux
* unix
* sun_intel
* sun_sparc
* Windows
* mac
* нет
|makefile_writer |Пользовательский файл makefile
|класс |Имя класса для пользовательского создателя файла makefile Класс реализует
org.netbeans.modules.cnd.makeproject.spi.configurations.MakefileWriter.
|drive_letter_prefix |Специальный префикс для имен
|stringvalue |"/" для unix
"/cygdrive/" для cygwin на ОС Windows
|base_folders |Контейнер для тегов base_folder.
В теге base_folders содержится один или несколько тегов.
|base_folder |Описание базового каталога для компиляторов
Данный тег может содержать следующие теги:
|реестр |Ключ реестра Windows для средства. Обратите внимание на то, что тег XML пишется как "regestry", несмотря на орфографическую ошибку.
|шаблон |Регулярное выражение, позволяющее IDE NetBeans найти компилятор в реестре
|суффикс |Папка с исполняемыми файлами
|path_patern |Регулярное выражение, позволяющее IDE NetBeans найти компилятор путем сканирования путей. Обратите внимание на то, что тег XML пишется как "path_patern", несмотря на орфографическую ошибку.
|command_folders |Контейнер для тегов command_folder.
В одном теге command_folders содержится один или несколько тегов commander_folder.
|command_folder |Описывает каталог, где находятся UNIX-подобные команды.
Требуется только для компилятора MinGW на ОС Windows. Тег command_folder может содержать следующие теги:
|реестр |Ключ реестра Windows для команд. Обратите внимание на то, что тег XML пишется как "regestry", несмотря на орфографическую ошибку.
|шаблон |Регулярное выражение, позволяющее IDE NetBeans найти папку команд в реестре
|суффикс |Папка с исполняемыми файлами
|path_patern |Регулярное выражение, позволяющее IDE NetBeans найти команды. Обратите внимание на то, что тег XML пишется как "path_patern", несмотря на орфографическую ошибку.
|сканер |Имя службы синтаксического анализатора, см. раздел <<errorhandler,Создание обработчика ошибок пользовательского компилятора>>.
|идентификатор |Имя службы синтаксического анализатора
|===
==== Флаги компилятора
В данной таблице описаны теги, используемые в описании компиляторов и в определении флагов компиляторов для интсорументальной цепочки.
|===
|Теги |Описание |Пример для компилятора GNU
|c,cpp |Набор флагов компилятора находится в следующих подузлах:
|средство распознавания |Регулярное выражение, позволяющее IDE найти компилятор |Для GNU в среде cygwin на ОС Windows
.*[\\/].*cygwin.*[\\/]bin[\\/]?$
|компилятор |Имя компилятора (имя исполняемого файла) |gcc или g++
|версия |флаг версии |--версия
|system_include_paths |Флаги для получения путей к системным файлам include. |-x c -E -v
|system_macros |Флаги для получения системных макросов. |-x c -E -dM
|user_include |Флаг для добавления пути к пользовательскому файлу include. |-I
|user_file |Флаг для добавления содержимого _файла_ перед содержимым других файлов |-include _файл_
|user_macro |Флаг для добавления пользовательского макроса. |-D
|development_mode |Группы флагов для различных режимов разработки.
|warning_level |Группы флагов для различных уровней предупреждения.
|архитектура |Группы флагов для различных архитектур.
|удалить |Флаг для удаления информации об отладке. |-s
|c_standard |Определяет флаги для стандартных выражений C. Используется с тегами c89, c99 и c11. |c89 flags="-std=c89"
c99 flags="-std=c99"
c11 flags="-std=c11"
|cpp_standard |Определяет флаги для стандартных выражений C++. Используется с тегами cpp98 и cpp11. |cpp98 flags="-std=c++98"
cpp11 flags="-std=c++11"
cpp11 flags="-std=gnu++0x"
|output_object_file |Флаги для указания файла объектов |-o _(после -o необходим пробел)_
|dependency_generation |Флаги для создания зависимостей. |-MMD -MP -MF $@.d
|precompiled_header |Флаги для предварительно скомпилированного заголовка. |-o $@
|important_flags |Регулярное выражение, которое определяет флаги компилятора, изменяющие систему по умолчанию, включая пути и предопределенные макросы для помощи при работе с кодом |-O1|-O2|-O3|-O4|-O5|-Ofast|-Og|-Os|-ansi|-fPIC|-fPIE|-fasynchronous-unwind-tables|-fbuilding-libgcc|-fexceptions|-ffast-math|-ffinite-math-only|-ffreestanding|-fgnu-tm|-fhandle-exceptions|-fleading-underscore|-fno-exceptions|-fno-rtti|-fnon-call-exceptions|-fnon-call-exceptions|-fopenmp|-fpic|-fpie|-fsanitize=address|-fshort-double|-fshort-wchar|-fsignaling-nans|-fstack-protector(\W|$|-)|-fstack-protector-all|-funsigned-char|-funwind-tables|-g(\W|$|-)|-ggdb|-gsplit-dwarf|-gtoggle|-m128bit-long-double|-m3dnow|-m64|-mabm|-madx|-maes|-march=.*|-mavx|-mavx2|-mbmi|-mbmi2|-mf16c|-mfma(\W|$|-)|-mfma4|-mfsgsbase|-mlong-double-64|-mlwp|-mlzcnt|-mpclmul|-mpopcnt|-mprfchw|-mrdrnd|-mrdseed|-mrtm|-msse3|-msse4(\W|$|-)|-msse4.1|-msse4.2|-msse4a|-msse5|-mssse3|-mtbm|-mtune=.*|-mx32|-mxop|-mxsave|-mxsaveopt|-pthreads|-std=.*|-xc($|\+\+$)
|многопоточность |Группы флагов для поддержки многопоточности. |Только для наборов средств Oracle Solaris Studio. Не используется в наборах средств на основе GNU.
|стандартный |Группы флагов для различных языковых стандартов. |Только для наборов средств Oracle Solaris Studio. Не используется в наборах средств на основе GNU.
|language_extension |Группы флагов для различных языковых расширений. |Только для наборов средств Oracle Solaris Studio. Не используется в наборах средств на основе GNU.
|===
== Создание поставщика пользовательского компилятора
В IDE NetBeans имеется поставщик компиляторов по умолчанию:
org.netbeans.modules.cnd.toolchain.compilers.MakeProjectCompilerProvider
Этот поставщик работает для большей части инструментальных цепочек, но пользователи могут создавать собственных поставщиков.
*Для создания собственного поставщика компилятора выполните следующие действия:*
* расширьте абстрактный класс org.netbeans.modules.cnd.api.compilers.CompilerProvider,
* определите класс как службу и поместите ее перед поставщиком по умолчанию:
[source,java]
----
@org.openide.util.lookup.ServiceProvider(service = org.netbeans.modules.cnd.spi.toolchain.CompilerProvider.class,
position=500)
public class CustomCompilerProvider extends CompilerProvider {
...
}
----
Атрибут position=500 отвечает за вызов пользовательского поставщика перед поставщиком по умолчанию. Пользовательский поставщик должен возвращать ссылку на объект "Tool", не равную NULL, в методе createCompiler() для перезаписываемого средства.
== Создание обработчика ошибок для пользовательского компилятора
В IDE NetBeans имеется два обработчика ошибок компиляторов, заданные по умолчанию.
* для компилятора GNU,
* для компилятора Sun Studio.
Обработчик ошибок компилятора GNU совместим с любыми компиляторами GNU, однако можно создать собственный обработчик ошибок компилятора.
*Для создания собственного обработчика ошибок выполните следующие действия:*
* Расширьте абстрактный класс org.netbeans.modules.cnd.spi.toolchain.CompilerProvider.
* Определите класс как службу:
[source,java]
----
@org.openide.util.lookup.ServiceProvider(service = org.netbeans.modules.cnd.spi.toolchain.CompilerProvider.class)
public class CustomCompilerProvider extends ErrorParserProvider {
...
@Override
public String getID() {
return "MyParser"; // NOI18N
}
}
----
* Соедините сканер ошибок и описание набора средств с помощью идентификатора:
[source,xml]
----
</scanner id="MyParser">
...
</scanner>
----
== См. также
Дополнительные статьи о разработке с помощью C/C++/Fortran в IDE NetBeans см. в разделе link:https://netbeans.org/kb/trails/cnd.html[+Учебные карты C/C+++].
link:mailto:users@cnd.netbeans.org?subject=Feedback:Using%20the%20C/C++%20Tool%20Collection%20Descriptors%20-%20NetBeans%20IDE%208.0%20Tutorial[+Отправить отзыв по этому учебному курсу+]