// 
//     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.
//

= Usando o Descritor da Coleção de Ferramentas C/C++ - Tutorial do NetBeans IDE
:jbake-type: tutorial
:jbake-tags: tutorials 
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: Usando o Descritor da Coleção de Ferramentas C/C++ - Tutorial do NetBeans IDE - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, Usando o Descritor da Coleção de Ferramentas C/C++ - Tutorial do NetBeans IDE

_Contribuição de link:mailto:alexander.simon@oracle.com[+_Alexander Simon_+]
Março de 2014_ [Número da revisão: V8.0-1]


image::images/netbeans-stamp.png[title="O conteúdo desta página se aplica ao NetBeans IDE 8.0"]


*Para seguir este tutorial, você precisa do software a seguir.*

|===
|Software |Versão Necessária 

|NetBeans IDE (incluindo o suporte ao C/C++) |link:https://netbeans.org/downloads/index.html[+Versão 8.0+] 

|Java Development Kit (JDK) |link:http://www.oracle.com/technetwork/java/javase/downloads/index.html[+Versão 7 ou 8+] 
|===


Consulte as link:../../../community/releases/80/install.html[+Instruções de Instalação do NetBeans IDE+] e a link:../../../community/releases/80/cpp-setup-instructions.html[+ Configuração do NetBeans IDE para o C/C++/Fortran+] para obter informações sobre o download e a instalação do software necessário.


== Introdução

Este tutorial demonstra como editar coleções de ferramentas existentes ou criar a versão personalizada de uma coleção no NetBeans IDE 8.0.

O exemplo mostrado se aplica à coleção de ferramentas GNU para Oracle Solaris e Linux, mas os conceitos também podem ser aplicados ao Windows e ao Mac. Usando estas informações, você pode aprender a fazer o seguinte:

* Alterar os flags do compilador que o IDE usa por default para compilar arquivos C/C++
* Adicionar um compilador que não é suportado pelo IDE


== Coleções de Ferramentas

Uma coleção de ferramentas é um conjunto de compiladores, um utilitário make e um depurador que é especificado no IDE por meio do _descritor de coleção da ferramenta_. Cada vez que você compila, executa ou depura seu código, o IDE executa um arquivo executável que é descrito no descritor de coleção de ferramentas para a coleção de ferramentas para a qual o projeto está configurado para usar. A funcionalidade Assistência ao Código inclui caminhos e macros obtidos do descritor da coleção de ferramentas.

O descritor da coleção de ferramentas é um arquivo XML localizado no módulo  ``_IDE_HOME_/cnd/modules/org-netbeans-modules-cnd-toolchain.jar``  na pasta  ``org/netbeans/modules/cnd/toolchain/resources/toolchaindefinition/`` . Você não deve editar estes arquivos XML do descritor de ferramentas do IDE original.

Este artigo informa como criar duplicações dos descritores da ferramenta em seu próprio diretório do usuário do NetBeans que você pode editar. Em seguida, o IDE usará as informações nos descritores de coleções de ferramentas localizados no diretório do usuário, em vez de nas versões originais.


== Coleções de Ferramentas de Contribuição da Comunidade

Alguns plug-ins para as coleções de ferramentas foram enviados pelos usuários da comunidade 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+]

Observe que esses plug-ins não são suportados oficialmente, mas são mencionados aqui, caso você os ache úteis na criação de seus próprios plug-ins.

Pode ser que os usuários do Windows também fiquem interessados em um artigo de um usuário da comunidade NetBeans: link:http://minghuasweblog.wordpress.com/2012/09/27/netbeans-setup-and-gnu-cross-toolchain-configuration-for-arm-developmen/[+NetBeans Setup and GNU Cross-Toolchain Configuration for ARM Development+].


== Editando os Descritores de Coleções de Ferramentas

A edição de um descritor da coleção de ferramentas é um pouco difícil, visto que o NetBeans IDE não oferece uma GUI para edição de descritores. Esta seção descreve como fazer cópias de "sombra" dos descritores de coleção da ferramenta que você pode editar, a fim de alterar a forma pela qual o IDE usa as ferramentas.

1. Saia do IDE se ele estiver em execução.
2. Edite o arquivo  ``_IDE-HOME_/etc/netbeans.conf`` , no qual  ``_IDE-HOME_``  é o diretório de instalação do NetBeans.
3. Adicione o seguinte flag à entrada  ``netbeans_default_options`` :

[source,java]
----

-J-Dcnd.toolchain.personality.create_shadow=true
----
4. Inicie o IDE, escolha Ferramentas > Opções e selecione C/C++ na parte superior do painel da janela Opções. 

O IDE cria um diretório que contém versões de "sombra" dos descritores da coleção de ferramentas no diretório do usuário NetBeans:

_userdir_

[source,java]
----

/config/CND/ToolChain
----

A localização de seu diretório de usuário do NetBeans varia de acordo com seu sistema operacional. Algumas possíveis localizações do diretório  ``_userdir_/config/CND/ToolChain``  incluem o seguinte:

* ﻿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 e Solaris:  ``/home/_username_/.netbeans/_version_/config/CND/ToolChain`` 

A lista de descritores deve ser semelhante à seguinte:


[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

----

Você pode editar o descritor para a toolchain que você está usando. Por exemplo, se estiver usando GNU no Solaris, edite o arquivo  ``GNU_solaris.xml`` ; se você estiver usando MinGW no Windows, você deve editar o arquivo  ``MinGW.xml`` .

Para obter informações sobre as tags usadas nestes arquivos XML do descritor, consulte <<details,Detalhes do Arquivo XML da Coleção de Ferramentas>>. Você pode alterar os valores das tags para alterar o procedimento das ferramentas no IDE.

Os descritores deste diretório têm prioridade em relação às versões oficiais no diretório _IDE-HOME_. Você deve deletar os descritores de ferramenta que você não deseja que o IDE use, em seu diretório do usuário.

5. Remova o flag  ``-J-Dcnd.toolchain.personality.create_shadow=true``  do  ``_IDE-HOME_/etc/netbeans.conf`` , de forma que o IDE não crie descritores de sombra novamente.
6. Reinicie o IDE para usar o descritor de ferramentas modificado quando terminar de fazer as alterações.


== Criando uma Coleção de Ferramentas Personalizada

Esta seção mostra como criar uma coleção de ferramentas que é baseada na coleção de ferramentas GNU com algumas alterações para os flags do compilador para depuração. O exemplo mostra etapas para criar um novo módulo do NetBeans que contenha uma nova coleção de ferramentas para permitir que você compartilhe a coleção de ferramentas ou use-a em outras instâncias do IDE.

Para obter informações gerais sobre a criação de módulos NetBeans, consulte link:http://platform.netbeans.org/tutorials/nbm-google.html[+Início Rápido do Plug-in do NetBeans+].


*Para criar uma coleção de ferramentas personalizada:*

1. Certifique-se de que sua instalação do NetBeans inclua o módulo de Desenvolvimento de Plug-in do NetBeans.

Escolha Ferramentas > Plug-ins e clique na guia Instalados. Se o módulo Desenvolvimento de Plug-in do NetBeans não estiver instalado, clique na guia Plug-ins Disponíveis e instale o módulo. É possível encontrá-lo rapidamente digitando "plug-in" na caixa Pesquisar.
2. Crie um novo módulo NetBeans escolhendo Arquivo > Novo Projeto. Na página Escolher Projeto do assistente de Novo Projeto, selecione a categoria Módulos NetBeans e o projeto Módulo na primeira etapa do assistente. Clique em Próximo.
3. Na página Nome e Localização, digite o nome do projeto, por exemplo  ``mytoolchain``  e deixe todos os campos como estão. Clique em Próximo.
4. Na página Configuração Básica do Módulo, digite  ``org.myhome.mytoolchain``  para Base do Nome do Código, que define a string exclusiva que identifica o módulo que você está criando. A base do nome do código também é usada como o pacote principal do módulo.
5. Não marque a caixa de seleção "Gerar Pacote OSGi", pois você usará o sistema de módulos do NetBeans default, em vez do OSGi.
6. Clique em Finalizar. O IDE cria um novo projeto chamado mytoolchain.
7. Na guia Projetos, clique com o botão direito do mouse no nó do projeto mytoolchain e selecione Novo > Outros.
8. No assistente Novo Arquivo, selecione a categoria Desenvolvimento do Módulo e o tipo de arquivo Camada XML. Em seguida, clique em Próximo e em Finalizar. 

O IDE cria  ``layer.xml``  no nó Pacotes de Código-fonte, no pacote principal  ``org.myhome.mytoolchain``  e abre  ``layer.xml``  no editor.
9. Se o arquivo contiver uma tag  ``<filesystem/>`` , substitua-a pelas tags  ``filesystem``  de abertura e fechamento: ``<filesystem>`` 

[source,xml]
----


 ``</filesystem>`` 
----
10. Copie e cole o texto seguinte dentro da tag  ``layer.xml``  na tag  ``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>
    
----
11. Abra o arquivo  ``Bundle.properties``  e adicione a seguinte string:
 ``CND/ToolChains/GNU_tuned=My GNU Tuned Tool Collection`` 
12. Crie um subpacote  ``toolchain``  clicando com o botão direito do mouse no pacote  ``org.myhome.mytoolchain``  em Pacotes de Código-fonte e selecionando Novo > Pacote Java. Substitua o nome do pacote default  ``newpackage``  por  ``toolchain``  e clique em Finalizar. O IDE cria o subpacote  ``org.myhome.mytoolchain.toolchain`` .
13. Crie um novo arquivo, clicando com o botão direito do mouse no subpacote  ``org.myhome.mytoolchain.toolchain``  e selecionando Novo > Arquivo Vazio. Chame o projeto de  ``GNU_tuned_flavor.xml``  e clique em Finalizar.

Se você não visualizar Arquivo Vazio como uma opção, selecione Outros e, no assistente Novo Arquivo, selecione a categoria Outros e o tipo de arquivo Arquivo Vazio e clique em Próximo.

Este arquivo é o descritor de coleção de ferramentas para a nova coleção de ferramentas.

14. Copie e cole o texto seguinte em  ``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>

----
15. Crie outro arquivo novo, clicando com o botão direito do mouse no subpacote  ``org.myhome.mytoolchain.toolchain``  e selecionando Novo > Arquivo Vazio. Chame o projeto de  ``GNU_tuned_cpp.xml``  e clique em Próximo.
16. Copie e cole o texto seguinte em  ``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>

----

Observe que os flags de depuração estão definidos como -g3 e -gdwarf-2, que são diferentes dos flags definidos na descrição da coleção de ferramentas GNU default.

A árvore do projeto deve ter uma aparência semelhante à seguinte:

image::images/project.png[title="Árvore do projeto"]

As pastas Teste de Unidade talvez não exista.

17. Na janela Projetos, clique com o botão direito do mouse no nó do projeto  ``mytoolchain``  e escolha Executar. O módulo é construído e instalado em uma nova instância do IDE, que é a plataforma de destino default dos módulos. A plataforma de destino se abre, de modo que você possa experimentar o novo módulo.
18. No módulo em execução, escolha Ferramentas > Opções, selecione C/C++ na parte superior do painel da janela Opções e selecione a guia Ferramentas de Construção.
19. Se a nova coleção de ferramentas (GNU_tuned) não for exibida, clique em Restaurar Default. Clique em Sim para continuar quando solicitado para verificar novamente seu ambiente.

O IDE mostra a nova coleção de ferramentas:

image::images/options.png[title="Painel Opções"]
20. Crie um novo projeto C/C++ de amostra  ``Bem-Vindo``  selecionando Arquivo > Novo Projeto > Amostras > C/C++ > Bem-Vindo.
21. Clique com o botão direito do mouse no nó do projeto e escolha Propriedades. Na caixa de diálogo Propriedades do Projeto, selecione o nó Construir, defina a Coleção de Ferramentas como a coleção de ferramentas GNU_tuned e clique em OK.
22. Construa o projeto. Observe que o compilador tem os flags  ``-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
----
23. Na caixa de diálogo Propriedades do Projeto, selecione a coleção de ferramentas GNU e clique em OK.
24. Construa o projeto novamente e compare a linha compilada na janela de saída:

[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
----

Você verá que a coleção de ferramentas GNU_tuned tem diferentes flags do compilador para depuração, Modo de Desenvolvimento para o compilador GNU.

Se quiser usar o novo módulo para a coleção de ferramentas GNU_tuned no seu IDE habitual, você pode criar um binário (um arquivo .nbm) e adicioná-lo como um plug-in:

1. Clique com o botão direito do mouse no projeto do módulo mytoolchain e selecione Criar NBM. O arquivo .nbm é criado no subdiretório de construção do projeto, o qual pode ser visto na guia Arquivos.
2. Selecione Ferramentas > Plug-ins e clique na guia Submetido a Download na caixa de diálogo Plug-ins.
3. Clique em Adicionar Plug-ins, vá até o diretório de construção, selecione o módulo do arquivo .nbm e clique em Abrir. O módulo de plug-in é adicionado à lista na guia Submetido a Download.
4. Clique na caixa de seleção para selecionar o módulo na guia Submetido a Download e clique no botão Instalar. O Instalador de Plug-in do NetBeans e aberto.
5. Clique em Próximo para avançar pelo instalador e continuar até que a instalação seja finalizada.
6. Reinicie o IDE, em seguida, escolha Ferramentas > Opções, selecione C/C++ na parte superior do painel da janela Opções e selecione a guia Ferramentas de Construção.
7. Se a nova coleção de ferramentas (GNU_tuned) não for exibida, clique em Restaurar Defaults. Clique em Sim para continuar quando solicitado para verificar novamente seu ambiente.


=== Detalhes do Arquivo XML da Coleção de Ferramentas

Trata-se de uma descrição das tags mais importantes do arquivo xml da coleção de ferramentas.

Para obter um esquema de todas as tags e atributos suportados dos arquivos xml de toolchain, você pode pesquisar o arquivo  ``toolchaindefinition.xsd``  na link:http://hg.netbeans.org/cnd-main[+árvore do código-fonte do NetBeans IDE+].


==== Tags de definição da coleção de ferramentas

|===
|Tags |Atributos |Descrição 

|toolchain |Nome da coleção de ferramentas 

|nome |Nome da coleção de ferramentas 

|exibição |Nome de exibição da coleção de ferramentas 

|família |Nome do grupo da coleção de ferramentas 

|plataformas |Plataformas suportadas 

|stringvalue |Lista das plataformas suportadas separadas por vírgula.
Os valores possíveis são:

* linux
* unix
* sun_intel
* sun_sparc
* windows
* mac
* none
 

|makefile_writer |Escritor de makefile personalizado. 

|classe |Nome da classe do escritor de makefile personalizado. Deve implementar
org.netbeans.modules.cnd.makeproject.spi.configurations.MakefileWriter. 

|drive_letter_prefix |Prefixo especial para nomes de arquivos 

|stringvalue |"/" para unix
"/cygdrive/" para cygwin no Windows 

|base_folders |Contêiner das tags base_folder. 
Uma ou mais tags base_folder estão contidas em uma tag base_folders. 

|base_folder |Descrição do diretório-base dos compiladores.
Este tag pode conter as seguintes tags: 

|regestry |Chave de registro do Windows da ferramenta. Observe que a tag XML deve ser escrita "regestry" embora seja um erro ortográfico. 

|pattern |Expressão regular que permite que o NetBeans IDE localize o compilador no registro 

|suffix |Pasta com os arquivos executáveis 

|path_patern |Expressão regular que permite que o NetBeans IDE localize o compilador examinando os caminhos. Observe que a tag XML deve ser escrita "path_patern" embora seja um erro ortográfico. 

|command_folders |Contêiner das tags command_folder. 
Uma ou mais tags commander_folder estão contidas em uma tag command_folders. 

|command_folder |Descreve o diretório no qual se encontram os comandos do tipo UNIX.
Necessários somente para compiladores MinGW no Windows. A tag command_folder pode conter as seguintes tags: 

|regestry |Chave de comandos de registro do Windows. Observe que a tag XML deve ser escrita "regestry" embora seja um erro ortográfico. 

|pattern |Expressão regular que permite que o NetBeans IDE localize a pasta de comandos no registro 

|suffix |Pasta com os arquivos executáveis 

|path_patern |Expressão regular que permite que o NetBeans IDE localize os comandos. Observe que a tag XML deve ser escrita "path_patern" embora seja um erro ortográfico. 

|scanner |Nome do serviço de parser de erros, consulte <<errorhandler,Criando um Handler de Erros Personalizado para o Compilador>> 

|id |Nome do serviço de parser de erros 
|===


==== Flags do Compilador

Esta tabela lista as tags usadas para descrever os compiladores e especificar os flags do compilador para toolchain.

|===
|Tags |Descrição |Exemplo de compilador GNU 

|c,cpp |O conjunto de flags do compilador está localizado nos subnós a seguir 

|reconhecedor |Expressão regular que permite que o IDE localize o compilador |Para GNU em cygwin no Windows
.*[\\/].*cygwin.*[\\/]bin[\\/]?$ 

|compilador |Nome do compilador (nome do arquivo executável) |gcc ou g++ 

|versão |Flag de versão |--version 

|system_include_paths |Flags para obter caminhos de inclusão do sistema |-x c -E -v 

|system_macros |Flags para obter as macros do sistema |-x c -E -dM 

|user_include |Flag para adicionar caminho de inclusão do usuário |-I 

|user_file |Flag para incluir o conteúdo de _file_ antes de outros arquivos |-include _file_ 

|user_macro |Flag para adicionar macro do usuário |-D 

|development_mode |Grupos de flags para diferentes modos de desenvolvimento 

|warning_level |Grupos de flags para diferentes níveis de advertência 

|architecture |Grupos de flags para diferente arquitetura 

|strip |Flag para informações de depuração de faixa |-s 

|c_standard |Especifica os flags para usar os padrões C. Use com as tags c89, c99 e c11. |c89 flags="-std=c89"
c99 flags="-std=c99"
c11 flags="-std=c11" 

|cpp_standard |Especifica os flags para usar os padrões C++. Use com as tags cpp98 e cpp11. |cpp98 flags="-std=c++98"
cpp11 flags="-std=c++11"
cpp11 flags="-std=gnu++0x" 

|output_object_file |Flags para especificar o arquivo do objeto |-o _(deve ter o seguinte espaço -o)_ 

|dependency_generation |Flags de geração de dependência |-MMD -MP -MF $@.d 

|precompiled_header |Flag do cabeçalho pré-compilado |-o $@ 

|important_flags |Expressão regular que especifica quais flags do compilador alteram os caminhos de inclusão e as macros predefinidas do sistema padrão para assistência de código |-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($|\+\+$) 

|multithreading |Grupos de flags de suporte a multithreading |Só para a coleção de ferramentas do Oracle Solaris Studio; não usado para as coleções de ferramentas com base em GNU 

|standard |Grupos de flags para diferentes padrões de linguagem |Só para a coleção de ferramentas do Oracle Solaris Studio; não usado para as coleções de ferramentas com base em GNU 

|language_extension |Grupos de flags para diferentes extensões de linguagem |Só para a coleção de ferramentas do Oracle Solaris Studio; não usado para as coleções de ferramentas com base em GNU 
|===


== Criando um Provedor de Compilador Personalizado

O NetBeans IDE possui um provedor de compilador default:
org.netbeans.modules.cnd.toolchain.compilers.MakeProjectCompilerProvider 
Este provedor funciona bastante bem na maioria dos toolchains, mas você pode criar seu próprio provedor.

*Para criar seu próprio provedor de compilador:*

* amplie a classe abstrata org.netbeans.modules.cnd.api.compilers.CompilerProvider
* defina a classe como serviço e coloque-a antes do provedor default:

[source,java]
----

@org.openide.util.lookup.ServiceProvider(service = org.netbeans.modules.cnd.spi.toolchain.CompilerProvider.class,
position=500)
public class CustomCompilerProvider extends CompilerProvider {
...
}

----
O atributo position=500 garante que o provedor personalizado será chamado antes do provedor default. O provedor personalizado deveria retornar "Tool" não-nula no método "createCompiler()" para a ferramenta que deveria ser substituída.


== Criando um Handler de Erros Personalizado para o Compilador

O NetBeans IDE possui dois handlers de erros do compilador default.

* para compilador GNU
* para compilador Sun Studio

O handler do compilador GNU funciona bastante bem em qualquer compilador GNU, mas, se quiser, pode definir seus próprios handlers de erros do compilador.

*Para criar seu próprio handler de erro do compilador: *

* estenda a classe abstrata org.netbeans.modules.cnd.api.compilers.CompilerProvider
* defina a classe como serviço:

[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
          }
      }
----
* vincule o scanner de erros e a descrição da coleção de ferramentas usando o ID:

[source,xml]
----

</scanner id="MyParser">
...
  </scanner>
----


== Consulte Também

Consulte a link:https://netbeans.org/kb/trails/cnd.html[+Trilha do Aprendizado C/C+++] para obter mais artigos sobre o desenvolvimento com C/C++/Fortran no NetBeans IDE.

link:mailto:users@cnd.netbeans.org?subject=Feedback:Using%20the%20C/C++%20Tool%20Collection%20Descriptors%20-%20NetBeans%20IDE%208.0%20Tutorial[+Enviar Feedback neste Tutorial+]


