| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> |
| <html> |
| <head> |
| <meta http-equiv="content-type" content="text/html; charset=UTF-8"> |
| <meta name="author" content="alexander.simon@oracle.com"> |
| <meta name="description" content="A short guide to modify or create a new tool collection for C/C++ in NetBeans IDE 7.4. Most content |
| also applies to Oracle Solaris Studio IDE."> |
| <meta name="keywords" content="NetBeans, Oracle Solaris Studio, Sun Studio, Solaris Studio, IDE, tool collection, |
| tutorial, guide, user, documentation, open source, C, C++, make, dbx, gdb"> |
| <link rel="stylesheet" type="text/css" href="../../../netbeans.css"> |
| <title>Использование дескрипторов наборов средств C/C++ - Практическое руководство по IDE NetBeans</title> |
| </head><body style="padding: 2px;"> |
| <h1>Использование дескрипторов наборов средств C/C++ - Практическое руководство по IDE NetBeans</h1> |
| <div class="articledate" style="margin-left: 0px;font-style:italic;"> |
| <p><em>Составитель: <a href="mailto:alexander.simon@oracle.com"><i>Александр Саймон (Alexander Simon)</i></a><!-- maintained by susan.morgan@oracle.com --><br> Октябрь 2013</em> [Номер версии: V7.4-1]</div> |
| <p><b>Содержание</b></p> |
| <img alt="Содержимое на этой странице применимо к IDE NetBeans 7.3 и 7.4" class="stamp" src="../../../images_www/articles/73/netbeans-stamp-74-73.png" title="Содержимое этой страницы применимо к IDE NetBeans 7.3 и 7.4"> |
| <ul class="toc"> |
| <li><a href="#intro">Введение</a></li> |
| <li><a href="#tool">Наборы средств</a></li> |
| <li><a href="#community">Наборы инструментов, предоставленные сообществом</a></li> |
| <li><a href="#edit">Изменение дескрипторов наборов средств</a></li> |
| <li><a href="#create">Создание пользовательского набора средств</a></li> |
| <li><a href="#details">Дополнительные сведения о файле XML набора средств</a></li> |
| <li><a href="#provider">Создание поставщика особого компилятора</a></li> |
| <li><a href="#errorhandler">Создание обработчика ошибок для пользовательского компилятора</a></li> |
| </ul> |
| |
| <p><b>Для работы с этим учебным курсом требуется программное обеспечение, указанное ниже.</b></p> |
| |
| <table class="b-none vatop" cellpadding="0" cellspacing="0"> |
| <tbody> |
| <tr> |
| <th class="tblheader" scope="col">Программное обеспечение</th> |
| <th class="tblheader" scope="col">Требуемая версия</th> |
| </tr> |
| <tr> |
| <td class="tbltd1">IDE NetBeans (включая поддержку C/C++)</td> |
| <td class="tbltd1"><a href="https://netbeans.org/downloads/index.html">Версия 7.3 или 7.4</a></td> |
| </tr> |
| <tr> |
| <td class="tbltd1">Комплект для разработчика на языке Java (JDK)</td> |
| <td class="tbltd1"><a href="http://www.oracle.com/technetwork/java/javase/downloads/index.html">Версия 6 или 7</a> </td> |
| </tr> |
| </tbody> |
| </table> |
| <br> |
| <p>Дополнительные сведения о загрузке и установке необходимого программного обеспечения см. в разделах <a href="../../../community/releases/74/install.html">Инструкции по установке IDE NetBeans</a> и <a HREF="../../../community/releases/74/cpp-setup-instructions.html">Настройка IDE NetBeans для C/C++/Fortran</a>.</p> |
| |
| |
| <a id="intro"></a> |
| <h2>Введение</h2> |
| |
| <p>Это практическое руководство содержит инструкции по изменению существующих наборов средств и созданию собственной версии набора средств на основе существующего в IDE NetBeans 7.4.</p> |
| <p>Показанный пример относится к набору средств GNU для Solaris и Linux, но общие принципы применимы также для Windows и Mac. Используя информацию в этом руководстве, вы научитесь делать следующее: |
| </p> |
| <ul> |
| <li>Менять флаги компиляторов, которые IDE NetBeans по умолчанию использует для компиляции файлов C/C++</li> |
| <li>Добавлять компиляторы, которые не поддерживаются в среде IDE</li> |
| </ul> |
| |
| <h2><a name="tool"></a>Наборы средств</h2> |
| |
| <p>В набор средств входят набор компиляторов, утилита make и отладчик. Набор средств определяется в IDE с помощью <em>дескриптора наборов инструментов</em>. При каждой компиляции, создании или отладке кода IDE NetBeans запускает исполняемый файл, описанный в дескрипторе наборов средств для набора средств, заданного в настройках проекта. Функции 'Помощь при работе с кодом' используют пути include и макросы из дескриптора наборов средств.</p> |
| |
| <p>Дескриптор набора средств - это XML-файл, расположенный в модуле <tt><em>IDE_HOME</em>/cnd/modules/org-netbeans-modules-cnd-toolchain.jar</tt>, который находится в папке <tt>org/netbeans/modules/cnd/toolchain/resources/toolchaindefinition/</tt>. Вносить изменения в исходные XML-файлы дескриптора средств IDE не рекомендуется. </p> |
| <p>Эта статья содержит инструкции по созданию дубликатов дескрипторов средств в собственном каталоге пользователя NetBeans, доступном для редактирования. IDE будет использовать данные дескрипторов наборов средств, расположенных в вашем каталоге пользователя, вместо исходных версий. </p> |
| <h2><a name="community"></a>Наборы инструментов, предоставленные сообществом</h2> |
| <p>Некоторые подключаемые модули для наборов средств разработаны участниками сообщества NetBeans:</p> |
| <ul><li><a href="http://plugins.netbeans.org/plugin/36176/cuda-plugin">Cuda</a></li> |
| <li><a href="http://plugins.netbeans.org/plugin/27033/msp430-toolchain">TI msp430 microcontroller toolchain</a></li> |
| <li><a href="http://plugins.netbeans.org/plugin/42519/">Visual Studio</a></li> |
| </ul> |
| <p>Напоминаем, что эти подключаемые модули официально не поддерживаются, но приводятся со справочной целью, так как могут послужить в качестве основы для создания ваших собственных подключаемых модулей.</p> |
| <p>Пользователям Windows также будет интересна статья одного из участников сообщества NetBeans: <a href="http://minghuasweblog.wordpress.com/2012/09/27/netbeans-setup-and-gnu-cross-toolchain-configuration-for-arm-developmen/">Настройка NetBeans и общие настройки наборов средств GNU для разработки ARM</a>. |
| </p> |
| |
| <h2><a name="edit"></a>Изменение дескрипторов наборов средств</h2> |
| <p>Изменение дескрипторов наборов средств представляет собой непростую задачу, поскольку в IDE NetBeans отсутствует графический пользовательский интерфейс для изменения дескрипторов. В этом разделе описывается создание 'теневых' копий дескрипторов наборов инструментов, которые можно изменить, если требуется, чтобы в среде IDE использовались другие средства. </p> |
| <ol> |
| <li>Завершите работу среды IDE, если она запущена.</li> |
| <li>Отредактируйте файл <tt><em>IDE-HOME</em>/etc/netbeans.conf</tt>, где <tt><em>IDE-HOME</em></tt> - каталог установки NetBeans.</li> |
| <li>Добавьте следующий флаг в запись <tt>netbeans_default_options</tt>: |
| <pre>-J-Dcnd.toolchain.personality.create_shadow=true</pre> |
| </li> |
| <li> |
| Запустите среду IDE, выберите "Сервис" > "Параметры", затем в верхней панели окна параметров выберите "C/C++". <br> |
| <p>IDE создает 'теневые' версии дескрипторов наборов средств в каталоге пользователя NetBeans: |
| <pre><em>userdir</em>/config/CND/ToolChain</pre></p> |
| |
| <p class="note">Местоположение каталога пользователя NetBeans зависит от операционной системы. Возможные варианты местоположения каталога <tt><em>userdir</em>/config/CND/ToolChain</tt>:</p> |
| <ul> |
| <li>Windows: <tt>C:\Documents and Settings\<em>username</em>\Application Data\NetBeans\<em>version</em>\config\CND\ToolChain</tt></li> |
| <li>Mac: <tt>/Users/<em>username</em>/Library/Application Support/NetBeans/<em>version</em>/config/CND/ToolChain</tt></li> |
| <li>Linux и Solaris: <tt>/home/<em>username</em>/.netbeans/<em>version</em>/config/CND/ToolChain</tt></li> |
| </ul> |
| |
| <p> |
| Список дескрипторов должен быть аналогичен следующему:</p> |
| <pre>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 |
| </pre> |
| |
| |
| <p>Вы можете изменить дескриптор для используемого набора средств. Например, если вы используете средства GNU в ОС Solaris, необходимо отредактировать файл <tt>GNU_solaris.xml</tt>; если вы используете MinGW в ОС Windows, необходимо отредактировать файл <tt>MinGW.xml</tt>. </p> |
| <p>Сведения о тегах, используемых в XML-файлах дескриптора, см. в разделе <a href="#details">Подробно об XML-файлах набора средств</a>. Значения тегов можно изменить. В этом случае соответствующим образом изменится функционирование средств в IDE.</p> |
| <p>Дескрипторы, находящиеся в этом каталоге, имеют более высокий приоритет по сравнению с официальными версиями в каталоге <em>IDE-HOME</em>. Если вы не хотите, чтобы в среде IDE использовались некоторые дескрипторы средств, удалите их из своего каталога пользователя.</p></li> |
| <li>Удалите флаг <tt>-J-Dcnd.toolchain.personality.create_shadow=true</tt> из файла <tt><em>IDE-HOME</em>/etc/netbeans.conf</tt>, чтобы в среде IDE больше не создавались теневые копии дескрипторов.</li> |
| <li>Перед использованием измененного дескриптора средств необходимо перезапустить IDE. </li> |
| |
| </ol> |
| |
| |
| <h2><a name="create">Создание пользовательского набора средств</a></h2> |
| <p>Этот раздел содержит инструкции по созданию набора средств на основе набора средств GNU. В новом наборе средств будут изменены флаги компилятора для отладки. В примере показаны этапы создания нового модуля NetBeans с новым набором средств. Это модуль позволяет совместно использовать набор средств, а также использовать набор средств в других экземплярах IDE.</p> |
| <p>Для получения общих сведений о создании модулей NetBeans см. раздел <a href="http://platform.netbeans.org/tutorials/nbm-google.html">Руководство по началу работы с подключаемыми модулями в среде NetBeans</a>.</p> |
| <br><b>Чтобы создать собственный набор средств:</b> |
| <ol> |
| <li>Убедитесь, что в состав установленного экземпляра NetBeans входит модуль NetBeans Plugin Development.<br><br> Выберите Сервис > Подключаемые модули и перейдите на вкладку 'Установленные'. Если модуль разработки подключаемых модулей NetBeans не установлен, перейдите на вкладку "Доступные подключаемые модули" и установите модуль. Его можно быстро найти путем ввода текста "plugin" в окне поиска.</li> |
| <li>Создайте новый модуль NetBeans путем выбора "Файл" > "Создать проект". На странице "Выбор проекта" в мастере создания нового проекта выберите категорию "Модули NetBeans" и в первом шаге мастера укажите проект "Модуль". Нажмите кнопку "Далее". |
| </li> |
| <li>На странице "Имя и местоположение" введите имя проекта, например, <tt>mytoolchain</tt>, а в остальных полях оставьте значения по умолчанию. Нажмите кнопку "Далее".</li> |
| <li>На странице 'Основные настройки модуля' в поле 'Основа имени кода ' введите <tt>org.myhome.mytoolchain</tt>. Это имя определяет уникальный строковый ресурс для идентификации создаваемого модуля. Основа имени кода также используется в качестве основного пакета модуля. </li> |
| <li>Не устанавливайте флажок 'Создать пакет OSGi', так как в этом примере будет использоваться стандартная система модулей NetBeans, а не OSGi.</li> |
| <li>Нажмите кнопку "Готово". IDE создает новый проект с именем mytoolchain.</li> |
| <li>На вкладке 'Проекты' щелкните узел проекта mytoolchain правой кнопкой мыши и выберите Создать > Другое. </li> |
| <li>В мастере создания файлов выберите категорию 'Разработка модулей' и тип файла 'Слой XML', затем нажмите 'Далее' и 'Готово'. <br><br>IDE создает файл <tt>layer.xml</tt> в структуре узла 'Исходные пакеты' внутри основного пакета <tt>org.myhome.mytoolchain</tt> и открывает файл <tt>layer.xml</tt> в редакторе.</li> |
| <li>Если файл содержит тег <tt><filesystem/></tt>, замените его парными тегами <tt>filesystem</tt>:<pre><tt><filesystem></tt> |
| |
| <tt></filesystem></tt></pre></li> |
| |
| <li>Скопируйте и вставьте следующий текст в файл <tt>layer.xml</tt> внутри тега <tt>filesystem</tt>: |
| <pre> |
| <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> |
| </pre> |
| |
| </li> |
| <li>Откройте файл <tt>Bundle.properties</tt> и добавьте следующую строку:<br> <tt>CND/ToolChains/GNU_tuned=My GNU Tuned Tool Collection</tt></li> |
| |
| <li>Создайте подпакет <tt>toolchain</tt>. Для этого щелкните правой кнопкой мыши пакет <tt>org.myhome.mytoolchain</tt> в структуре узла 'Исходные пакеты' и выберите Создать > Пакет Java. Замените заданное по умолчанию имя пакета <tt>newpackage</tt> на <tt>toolchain</tt> и нажмите 'Готово'. IDE создает подпакет <tt>org.myhome.mytoolchain.toolchain</tt>. </li> |
| <li>Создайте новый файл. Щелкните правой кнопкой мыши подпакет <tt>org.myhome.mytoolchain.toolchain</tt> и выберите Создать > Пустой файл. Назовите файл <tt>GNU_tuned_flavor.xml</tt> и нажмите 'Готово'. |
| <p class="notes">Если в меню отсутствует пункт 'Пустой файл', выберите 'Другие'. Затем в мастере создания файлов выберите категорию 'Другие', тип файла 'Пустой файл' и нажмите 'Далее'.</p> |
| <p>Этот файл является дескриптором для нового набора средств.</p></li> |
| |
| <li>Скопируйте следующий текст в <tt>GNU_tuned_flavor.xml</tt>: |
| <pre><?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> |
| </pre> |
| </li> |
| <li>Создайте еще один файл. Щелкните правой кнопкой мыши подпакет <tt>org.myhome.mytoolchain.toolchain</tt> и выберите Создать > Пустой файл. Назовите файл <tt>GNU_tuned_cpp.xml</tt> и нажмите кнопку Next ("Далее"). |
| |
| <li>Скопируйте следующий текст в <tt>GNU_tuned_cpp.xml</tt>: |
| <pre> |
| <?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> |
| </pre> |
| <p>Обратите внимание на установленные флаги отладки -g3 и -gdwarf-2, которые отличаются от флагов, установленных в описании набора средств GNU по умолчанию.</p> |
| <p>Дерево проекта должно выглядеть следующим образом:</p> |
| <img alt="снимок дерева проекта" class="margin-around b-all" src="../../../images_www/articles/73/cnd/toolchain/project.png" title="Дерево проектов"> |
| <p>Папки 'Тест модуля' могут отсутствовать.</p> |
| </li> |
| <li>В окне 'Проекты' щелкните правой кнопкой мыши узел проекта <tt>mytoolchain</tt> и выберите 'Выполнить'. В новом экземпляре среды IDE будет создан и установлен модуль, представляющий собой целевую платформу по умолчанию для модулей. Откроется целевая платформа для тестирования нового модуля.</li> |
| <li>В выполняемом модуле выберите "Сервис" > "Параметры", затем в верхней панели окна параметров выберите "C/C++" и перейдите на вкладку "Средства сборки".</li> |
| <li>Если новый набор средств (GNU_tuned) не отображается, нажмите кнопку "Восстановить параметры по умолчанию". В запросе на повторный поиск в среде нажмите кнопку "Да" для продолжения работы. |
| <p>В среде IDE появится новый набор средств:</p> |
| <img alt="снимок окна 'Параметры'" class="margin-around b-all" src="../../../images_www/articles/73/cnd/toolchain/options.png" title="Панель 'Параметры'"> |
| </li> |
| <li>Создайте новый пример проекта C/C++ <tt>Welcome</tt> путем выбора "Файл" > "Создать проект" > "Примеры" > "C/C++" > "Welcome". |
| <li>Щелкните правой кнопкой узел проекта и выберите команду "Свойства". В диалоговом окне "Свойства проекта" выберите узел "Сборка", укажите набор средств GNU_tuned, затем нажмите кнопку "OK" . </li> |
| <li>Выполните сборку проекта. Убедитесь, что для компилятора установлены флаги <tt>-g3 -gdwarf-2</tt> |
| <pre class="examplecode">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</pre> |
| </li> |
| <li>В диалоговом окне "Свойства проекта" выберите набор средств GNU и нажмите кнопку "ОК".</li> |
| <li>Выполните повторную сборку проекта и сравните строку компиляции со строкой в окне вывода: |
| <pre class ="examplecode">g++ -c -g -MMD -MP -MF build/Debug/GNU-Solaris-x86/welcome.o.d -o build/Debug/GNU-Solaris-x86/welcome.o welcome.cc</pre> |
| </li> |
| </ol> |
| <p>Как видите, набор средств GNU_tuned содержит другие флаги компилятора для отладки, режима разработки в компиляторе GNU.</p> |
| <p class="notes">Для использования нового модуля для набора средств GNU_tuned в стандартной среде можно создать двоичный файл (файл .nbm) и добавить его в качестве подключаемого модуля: </p> |
| <ol><li>Щелкните правой кнопкой мыши проект модуля mytoolchain и выберите "Создать NBM". В подкаталоге сборки проекта будет создан файл .nbm, который также отображается на вкладке файлов.</li> |
| <li>Выберите "Сервис" > "Подключаемые модули", затем в диалоговом окне "Подключаемые модули" перейдите на вкладку "Загрузки". |
| </li> |
| <li>Нажмите кнопку "Добавить подключаемые модули", перейдите к каталогу сборки, выберите модуль файла .nbm и нажмите кнопку "Открыть". Подключаемый модуль будет добавлен в список на вкладке "Загрузки". </li> |
| <li>Для выбора модуля установите флажок на вкладке "Загрузки", затем нажмите кнопку "Установить". Откроется мастер установки подключаемых модулей NetBeans. |
| </li> |
| <li>Нажимайте кнопку "Далее" для перехода к последующим действиям мастера вплоть до последнего действия. </li> |
| <li>Перезапустите среду IDE, выберите "Сервис" > "Параметры", затем в верхней панели окна параметров нажмите "С/С++" и перейдите на вкладку "Средства сборки".</li> |
| <li>Если новый набор средств (GNU_tuned) не отображается, нажмите 'Восстановить параметры по умолчанию'. В запросе на повторный поиск в среде нажмите кнопку "Да" для продолжения работы. |
| </li></ol> |
| |
| |
| |
| <h3><a name="details"></a>Дополнительные сведения о файле XML набора средств</h3> |
| <p>В этом разделе описывается большая часть наиболее важных тегов в файле XML набора средств. |
| </p> |
| <p class="tips">Схему всех поддерживаемых тегов и атрибутов xml-файлов набора средств можно посмотреть в файле <tt>toolchaindefinition.xsd</tt> в <a href="http://hg.netbeans.org/cnd-main">дереве исходного кода IDE NetBeans</a>.</p> |
| |
| <h4>Теги определения набора средств</h4> |
| <table> |
| <tbody> |
| <tr> |
| <th class="tblheader" scope="col">Теги</th> |
| <th class="tblheader" scope="col">Атрибуты</th> |
| <th class="tblheader" scope="col">Описание</th> |
| </tr> |
| <tr> |
| <td class="tbltd1">инструментальная цепочка</td> |
| <td class="tbltd1"></td> |
| <td class="tbltd1">Имя набора средств</td> |
| </tr> |
| <tr> |
| <td class="tbltd1"></td> |
| <td class="tbltd1">"name" – имя</td> |
| <td class="tbltd1">Имя набора средств</td> |
| </tr> |
| <tr> |
| <td class="tbltd1"></td> |
| <td class="tbltd1">отображение</td> |
| <td class="tbltd1">Отображаемое имя набора средств</td> |
| </tr> |
| <tr> |
| <td class="tbltd1"></td> |
| <td class="tbltd1">семейство</td> |
| <td class="tbltd1">Имя группы набора средств</td> |
| </tr> |
| <tr> |
| <td class="tbltd1">платформы</td> |
| <td class="tbltd1"></td> |
| <td class="tbltd1">Поддерживаемые платформы</td> |
| </tr> |
| <tr> |
| <td class="tbltd1"></td> |
| <td class="tbltd1">stringvalue</td> |
| <td class="tbltd1">Перечень поддерживаемых платформ, разделенных запятой<br> Допустимые значения: |
| <ul> |
| <li>Linux</li> |
| <li>unix</li> |
| <li>sun_intel</li> |
| <li>sun_sparc</li> |
| <li>Windows</li> |
| <li>mac</li> |
| <li>нет</li> |
| </ul> |
| </td> |
| </tr> |
| <tr> |
| <td class="tbltd1">makefile_writer</td> |
| <td class="tbltd1"></td> |
| <td class="tbltd1">Пользовательский файл makefile</td> |
| </tr> |
| <tr> |
| <td class="tbltd1"></td> |
| <td class="tbltd1">класс</td> |
| <td class="tbltd1">Имя класса для пользовательского создателя файла makefile Класс реализует<br> org.netbeans.modules.cnd.makeproject.spi.configurations.MakefileWriter.</td> |
| |
| |
| <tr> |
| <td class="tbltd1">drive_letter_prefix</td> |
| <td class="tbltd1"></td> |
| <td class="tbltd1">Специальный префикс для имен</td> |
| </tr> |
| <tr> |
| <td class="tbltd1"></td> |
| <td class="tbltd1">stringvalue</td> |
| <td class="tbltd1">"/" для unix<br>"/cygdrive/" для cygwin на ОС Windows</td> |
| </tr> |
| <tr> |
| <td class="tbltd1">base_folders</td> |
| <td class="tbltd1"></td> |
| <td class="tbltd1">Контейнер для тегов base_folder. <br> В теге base_folders содержится один или несколько тегов. </td> |
| </tr> |
| |
| <tr> |
| <td class="tbltd1">base_folder</td> |
| <td class="tbltd1"></td> |
| <td class="tbltd1">Описание базового каталога для компиляторов<br> Данный тег может содержать следующие теги:</td></tr> |
| |
| |
| |
| |
| <tr> |
| <td class="tbltd1"></td> |
| <td class="tbltd1">реестр</td> |
| <td class="tbltd1">Ключ реестра Windows для средства. Обратите внимание на то, что тег XML пишется как "regestry", несмотря на орфографическую ошибку. </td> |
| </tr> |
| <tr> |
| <td class="tbltd1"></td> |
| <td class="tbltd1">шаблон</td> |
| <td class="tbltd1">Регулярное выражение, позволяющее IDE NetBeans найти компилятор в реестре</td> |
| </tr> |
| <tr> |
| <td class="tbltd1"></td> |
| <td class="tbltd1">суффикс</td> |
| <td class="tbltd1">Папка с исполняемыми файлами</td> |
| </tr> |
| <tr> |
| <td class="tbltd1"></td> |
| <td class="tbltd1">path_patern</td> |
| <td class="tbltd1">Регулярное выражение, позволяющее IDE NetBeans найти компилятор путем сканирования путей. Обратите внимание на то, что тег XML пишется как "path_patern", несмотря на орфографическую ошибку.</td> |
| </tr> |
| |
| |
| <tr> |
| <td class="tbltd1">command_folders</td> |
| <td class="tbltd1"></td> |
| <td class="tbltd1">Контейнер для тегов command_folder. <br> В одном теге command_folders содержится один или несколько тегов commander_folder. </td> |
| </tr> |
| <tr> |
| <td class="tbltd1">command_folder</td> |
| <td class="tbltd1"></td> |
| <td class="tbltd1">Описывает каталог, где находятся UNIX-подобные команды.<br> Требуется только для компилятора MinGW на ОС Windows. Тег command_folder может содержать следующие теги:</td></tr> |
| |
| |
| <tr> |
| <td class="tbltd1"></td> |
| <td class="tbltd1">реестр</td> |
| <td class="tbltd1">Ключ реестра Windows для команд. Обратите внимание на то, что тег XML пишется как "regestry", несмотря на орфографическую ошибку.</td> |
| </tr> |
| <tr> |
| <td class="tbltd1"></td> |
| <td class="tbltd1">шаблон</td> |
| <td class="tbltd1">Регулярное выражение, позволяющее IDE NetBeans найти папку команд в реестре</td> |
| </tr> |
| <tr> |
| <td class="tbltd1"></td> |
| <td class="tbltd1">суффикс</td> |
| <td class="tbltd1">Папка с исполняемыми файлами</td> |
| </tr> |
| <tr> |
| <td class="tbltd1"></td> |
| <td class="tbltd1">path_patern</td> |
| <td class="tbltd1">Регулярное выражение, позволяющее IDE NetBeans найти команды. Обратите внимание на то, что тег XML пишется как "path_patern", несмотря на орфографическую ошибку. |
| |
| </td> |
| </tr> |
| <tr> |
| <td class="tbltd1">сканер</td> |
| <td class="tbltd1"></td> |
| <td class="tbltd1">Имя службы синтаксического анализатора, см. раздел <a href="#errorhandler">Создание обработчика ошибок пользовательского компилятора</a>. </td> |
| </tr> |
| <tr> |
| <td class="tbltd1"></td> |
| <td class="tbltd1">идентификатор</td> |
| <td class="tbltd1">Имя службы синтаксического анализатора</td> |
| </tr> |
| </tbody> |
| </table> |
| <h4>Флаги компилятора</h4> |
| <p>В данной таблице описаны теги, используемые в описании компиляторов и в определении флагов компиляторов для интсорументальной цепочки.</p> |
| <table> |
| <tbody> |
| <tr> |
| <th class="tblheader" scope="col">Теги</th> |
| <th class="tblheader" scope="col">Описание</th> |
| <th class="tblheader" scope="col">Пример для компилятора GNU</th> |
| </tr> |
| <tr> |
| <td class="tbltd1">c,cpp</td> |
| <td class="tbltd1">Набор флагов компилятора находится в следующих подузлах:</td> |
| <td class="tbltd1"></td> |
| </tr> |
| |
| <tr> |
| <td class="tbltd1">средство распознавания</td> |
| <td class="tbltd1">Регулярное выражение, позволяющее IDE найти компилятор</td> |
| <td class="tbltd1">Для GNU в среде cygwin на ОС Windows<br>.*[\\/].*cygwin.*[\\/]bin[\\/]?$</td> |
| </tr> |
| <tr> |
| <td class="tbltd1">компилятор</td> |
| <td class="tbltd1">Имя компилятора (имя исполняемого файла)</td> |
| <td class="tbltd1">gcc или g++</td> |
| </tr> |
| <tr> |
| <td class="tbltd1">версия</td> |
| <td class="tbltd1">флаг версии</td> |
| <td class="tbltd1">--версия</td> |
| </tr> |
| <tr> |
| <td class="tbltd1">system_include_paths</td> |
| <td class="tbltd1">Флаги для получения путей к системным файлам include.</td> |
| <td class="tbltd1">-x c -E -v</td> |
| </tr> |
| <tr> |
| <td class="tbltd1">system_macros</td> |
| <td class="tbltd1">Флаги для получения системных макросов.</td> |
| <td class="tbltd1">-x c -E -dM</td> |
| </tr> |
| <tr> |
| <td class="tbltd1">user_include</td> |
| <td class="tbltd1">Флаг для добавления пути к пользовательскому файлу include.</td> |
| <td class="tbltd1">-I</td> |
| </tr> |
| <tr> |
| <td class="tbltd1">user_macro</td> |
| <td class="tbltd1">Флаг для добавления пользовательского макроса.</td> |
| <td class="tbltd1">-D</td> |
| </tr> |
| <tr> |
| <td class="tbltd1">development_mode</td> |
| <td class="tbltd1">Группы флагов для различных режимов разработки.</td> |
| <td class="tbltd1"></td> |
| </tr> |
| <tr> |
| <td class="tbltd1">warning_level</td> |
| <td class="tbltd1">Группы флагов для различных уровней предупреждения.</td> |
| <td class="tbltd1"></td> |
| </tr> |
| <tr> |
| <td class="tbltd1">архитектура</td> |
| <td class="tbltd1">Группы флагов для различных архитектур.</td> |
| <td class="tbltd1"></td> |
| </tr> |
| <tr> |
| <td class="tbltd1">удалить</td> |
| <td class="tbltd1">Флаг для удаления информации об отладке.</td> |
| <td class="tbltd1">-s</td> |
| </tr> |
| <tr> |
| <td class="tbltd1">c_standard</td> |
| <td class="tbltd1">Определяет флаги для стандартных выражений C. Используется с тегами c89 и c99.</td> |
| <td class="tbltd1"> c89 flags="-std=c89"<br> c99 flags="-std=c99"</td> |
| </tr> |
| <tr> |
| <td class="tbltd1">cpp_standard</td> |
| <td class="tbltd1">Определяет флаги для стандартных выражений C++. Используется с тегами cpp98 и cpp11.</td> |
| <td class="tbltd1"> cpp98 flags="-std=c++98"<br> cpp11 flags="-std=c++11"<br> cpp11 flags="-std=gnu++0x"</td> |
| </tr> |
| <tr> |
| <td class="tbltd1">output_object_file</td> |
| <td class="tbltd1">Флаги для указания файла объектов</td> |
| <td class="tbltd1">-o <i>(после -o необходим пробел)</i></td> |
| </tr> |
| <tr> |
| <td class="tbltd1">dependency_generation</td> |
| <td class="tbltd1">Флаги для создания зависимостей.</td> |
| <td class="tbltd1">-MMD -MP -MF $@.d</td> |
| </tr> |
| <tr> |
| <td class="tbltd1">precompiled_header</td> |
| <td class="tbltd1">Флаги для предварительно скомпилированного заголовка.</td> |
| <td class="tbltd1">-o $@</td> |
| </tr> |
| <tr> |
| <td class="tbltd1">многопоточность</td> |
| <td class="tbltd1">Группы флагов для поддержки многопоточности.</td> |
| <td class="tbltd1">Только для наборов средств Oracle Solaris Studio. Не используется в наборах средств на основе GNU.</td> |
| </tr> |
| <tr> |
| <td class="tbltd1">стандартный</td> |
| <td class="tbltd1">Группы флагов для различных языковых стандартов.</td> |
| <td class="tbltd1">Только для наборов средств Oracle Solaris Studio. Не используется в наборах средств на основе GNU.</td> |
| </tr> |
| <tr> |
| <td class="tbltd1">language_extension</td> |
| <td class="tbltd1">Группы флагов для различных языковых расширений.</td> |
| <td class="tbltd1">Только для наборов средств Oracle Solaris Studio. Не используется в наборах средств на основе GNU/td> |
| </tr> |
| </tbody> |
| </table> |
| <h2><a name="provider"></a>Создание поставщика пользовательского компилятора</h2> |
| <p>В IDE NetBeans имеется поставщик компиляторов по умолчанию:<br> org.netbeans.modules.cnd.toolchain.compilers.MakeProjectCompilerProvider <br> Этот поставщик работает для большей части инструментальных цепочек, но пользователи могут создавать собственных поставщиков.</p> |
| <p> |
| <b>Для создания собственного поставщика компилятора выполните следующие действия:</b></p> |
| <ul> |
| <li>расширьте абстрактный класс org.netbeans.modules.cnd.api.compilers.CompilerProvider, |
| </li> |
| <li>определите класс как службу и поместите ее перед поставщиком по умолчанию: |
| <pre> |
| @org.openide.util.lookup.ServiceProvider(service = org.netbeans.modules.cnd.spi.toolchain.CompilerProvider.class, |
| position=500) |
| public class CustomCompilerProvider extends CompilerProvider { |
| ... |
| } |
| </pre> |
| Атрибут position=500 отвечает за вызов пользовательского поставщика перед поставщиком по умолчанию. Пользовательский поставщик должен возвращать ссылку на объект "Tool", не равную NULL, в методе createCompiler() для перезаписываемого средства. |
| </li> |
| </ul> |
| |
| <h2><a name="errorhandler"></a>Создание обработчика ошибок для пользовательского компилятора</h2> |
| |
| <p>В IDE NetBeans имеется два обработчика ошибок компиляторов, заданные по умолчанию.</p> |
| <ul><li>для компилятора GNU,</li> |
| <li>для компилятора Sun Studio.</li> |
| </ul> |
| |
| <p>Обработчик ошибок компилятора GNU совместим с любыми компиляторами GNU, однако можно создать собственный обработчик ошибок компилятора.</p> |
| <p> |
| <b>Для создания собственного обработчика ошибок выполните следующие действия:</b> |
| </p> |
| <ul><li>Расширьте абстрактный класс org.netbeans.modules.cnd.spi.toolchain.CompilerProvider. |
| |
| </li> |
| <li>Определите класс как службу: |
| <pre>@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 |
| } |
| }</pre> |
| |
| </li> |
| <li>Соедините сканер ошибок и описание набора средств с помощью идентификатора: |
| <pre></scanner id="MyParser"> |
| ... |
| </scanner></pre> |
| </li> |
| </ul> |
| |
| <h2>См. также</h2> |
| <p>Дополнительные статьи о разработке с помощью C/C++/Fortran в IDE NetBeans см. в разделе <a href="https://netbeans.org/kb/trails/cnd.html">Учебные карты C/C++</a>.</p> |
| |
| |
| |
| <div class="feedback-box"><a href="mailto:users@cnd.netbeans.org?subject=Feedback:Using%20the%20C/C++%20Tool%20Collection%20Descriptors%20-%20NetBeans%20IDE%207.4%20Tutorial">Отправить отзыв по этому учебному курсу</a></div> |
| <br style="clear: both;"> |
| </body></html> |