| // |
| // 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[+Отправить отзыв по этому учебному курсу+] |
| |
| |