| <!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>Usando o Descritor da Coleção de Ferramentas C/C++ - Tutorial do NetBeans IDE</title> |
| </head><body style="padding: 2px;"> |
| <h1>Usando o Descritor da Coleção de Ferramentas C/C++ - Tutorial do NetBeans IDE</h1> |
| <div class="articledate" style="margin-left: 0px;font-style:italic;"> |
| <p><em>Contribuição de <a href="mailto:alexander.simon@oracle.com"><i>Alexander Simon</i></a><!-- maintained by susan.morgan@oracle.com --><br> Outubro de 2013</em> [Número de revisão: v7.4-1]</div> |
| <p><b>Conteúdo</b></p> |
| <img alt="O conteúdo desta página se aplica ao NetBeans IDE 6.8, 6.9, 7.3 e 7.4" class="stamp" src="../../../images_www/articles/73/netbeans-stamp-74-73.png" title="O conteúdo desta página se aplica ao NetBeans IDE 7.3 e 7.4"> |
| <ul class="toc"> |
| <li><a href="#intro">Introdução</a></li> |
| <li><a href="#tool">Coleções de Ferramentas</a></li> |
| <li><a href="#community">Coleções de Ferramentas de Contribuição da Comunidade</a></li> |
| <li><a href="#edit">Editando os Descritores de Coleções de Ferramentas</a></li> |
| <li><a href="#create">Criando uma Coleção de Ferramentas Personalizada</a></li> |
| <li><a href="#details">Detalhes do Arquivo XML da Coleção de Ferramentas</a></li> |
| <li><a href="#provider">Criando um Provedor de Compilador Personalizado</a></li> |
| <li><a href="#errorhandler">Criando um Handler de Erros Personalizado para o Compilador</a></li> |
| </ul> |
| |
| <p><b>Para seguir este tutorial, você precisa do software a seguir.</b></p> |
| |
| <table class="b-none vatop" cellpadding="0" cellspacing="0"> |
| <tbody> |
| <tr> |
| <th class="tblheader" scope="col">Software</th> |
| <th class="tblheader" scope="col">Versão Necessária</th> |
| </tr> |
| <tr> |
| <td class="tbltd1">NetBeans IDE (incluindo o suporte ao C/C++)</td> |
| <td class="tbltd1"><a href="https://netbeans.org/downloads/index.html">Versão 7.3 ou 7.4</a></td> |
| </tr> |
| <tr> |
| <td class="tbltd1">Java Development Kit (JDK)</td> |
| <td class="tbltd1"><a href="http://www.oracle.com/technetwork/java/javase/downloads/index.html">Versão 6 ou 7</a> </td> |
| </tr> |
| </tbody> |
| </table> |
| <br> |
| <p>Consulte as <a href="../../../community/releases/74/install.html">Instruções de Instalação do NetBeans IDE</a> e a <a HREF="../../../community/releases/74/cpp-setup-instructions.html"> Configuração do NetBeans IDE para o C/C++/Fortran</a> para obter informações sobre o download e a instalação do software necessário.</p> |
| |
| |
| <a id="intro"></a> |
| <h2>Introdução</h2> |
| |
| <p>Este tutorial demonstra como editar coleções de ferramentas existentes ou criar uma versão personalizada da coleção de ferramentas personalizada no NetBeans IDE 7.4.</p> |
| <p>O exemplo mostrado aplica-se à coleção de ferramentas de GNU para 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: |
| </p> |
| <ul> |
| <li>Alterar os flags do compilador que o IDE usa por default para compilar arquivos C/C++</li> |
| <li>Adicionar um compilador que não é suportado pelo IDE</li> |
| </ul> |
| |
| <h2><a name="tool"></a>Coleções de Ferramentas</h2> |
| |
| <p>Uma coleção de ferramentas é um conjunto de compiladores, um utilitário make e um depurador que é especificado no IDE por meio do <em>descritor de coleção da ferramenta</em>. 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.</p> |
| |
| <p>O descritor da coleção de ferramentas é um arquivo XML localizado no módulo <tt><em>IDE_HOME</em>/cnd/modules/org-netbeans-modules-cnd-toolchain.jar</tt> na pasta <tt>org/netbeans/modules/cnd/toolchain/resources/toolchaindefinition/</tt>. Você não deve editar estes arquivos XML do descritor de ferramentas do IDE original. </p> |
| <p>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. </p> |
| <h2><a name="community"></a>Coleções de Ferramentas de Contribuição da Comunidade</h2> |
| <p>Alguns plug-ins para as coleções de ferramentas foram enviados pelos usuários da comunidade 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>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.</p> |
| <p>Pode ser que os usuários do Windows também fiquem interessados em um artigo de um usuário da comunidade NetBeans: <a href="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</a>. |
| </p> |
| |
| <h2><a name="edit"></a>Editando os Descritores de Coleções de Ferramentas</h2> |
| <p>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. </p> |
| <ol> |
| <li>Saia do IDE se ele estiver em execução.</li> |
| <li>Edite o arquivo <tt><em>IDE-HOME</em>/etc/netbeans.conf</tt>, no qual <tt><em>IDE-HOME</em></tt> é o diretório de instalação do NetBeans.</li> |
| <li>Adicione o seguinte flag à entrada <tt>netbeans_default_options</tt>: |
| <pre>-J-Dcnd.toolchain.personality.create_shadow=true</pre> |
| </li> |
| <li> |
| Inicie o IDE, escolha Ferramentas > Opções e selecione C/C++ na parte superior do painel da janela Opções. <br> |
| <p>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: |
| <pre><em>userdir</em>/config/CND/ToolChain</pre></p> |
| |
| <p class="note">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 <tt><em>userdir</em>/config/CND/ToolChain</tt> incluem o seguinte:</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 e Solaris: <tt>/home/<em>username</em>/.netbeans/<em>version</em>/config/CND/ToolChain</tt></li> |
| </ul> |
| |
| <p> |
| A lista de descritores deve ser semelhante à seguinte:</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>Você pode editar o descritor para a toolchain que você está usando. Por exemplo, se estiver usando GNU no Solaris, edite o arquivo <tt>GNU_solaris.xml</tt>; se você estiver usando MinGW no Windows, você deve editar o arquivo <tt>MinGW.xml</tt>. </p> |
| <p>Para obter informações sobre as tags usadas nestes arquivos XML do descritor, consulte <a href="#details">Detalhes do Arquivo XML da Coleção de Ferramentas</a>. Você pode alterar os valores das tags para alterar o procedimento das ferramentas no IDE.</p> |
| <p>Os descritores deste diretório têm prioridade em relação às versões oficiais no diretório <em>IDE-HOME</em>. Você deve deletar os descritores de ferramenta que você não deseja que o IDE use, em seu diretório do usuário.</p></li> |
| <li>Remova o flag <tt>-J-Dcnd.toolchain.personality.create_shadow=true</tt> do <tt><em>IDE-HOME</em>/etc/netbeans.conf</tt>, de forma que o IDE não crie descritores de sombra novamente.</li> |
| <li>Reinicie o IDE para usar o descritor de ferramentas modificado quando terminar de fazer as alterações. </li> |
| |
| </ol> |
| |
| |
| <h2><a name="create"></a>Criando uma Coleção de Ferramentas Personalizada</h2> |
| <p>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.</p> |
| <p>Para obter informações gerais sobre a criação de módulos NetBeans, consulte <a href="http://platform.netbeans.org/tutorials/nbm-google.html">Início Rápido do Plug-in do NetBeans</a>.</p> |
| <br><b>Para criar uma coleção de ferramentas personalizada:</b> |
| <ol> |
| <li>Certifique-se de que sua instalação do NetBeans inclua o módulo de Desenvolvimento de Plug-in do NetBeans.<br><br> 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.</li> |
| <li>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. |
| </li> |
| <li>Na página Nome e Localização, digite o nome do projeto, por exemplo <tt>mytoolchain</tt> e deixe todos os campos como estão. Clique em Próximo.</li> |
| <li>Na página Configuração Básica do Módulo, digite <tt>org.myhome.mytoolchain</tt> 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. </li> |
| <li>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.</li> |
| <li>Clique em Finalizar. O IDE cria um novo projeto chamado mytoolchain.</li> |
| <li>Na guia Projetos, clique com o botão direito do mouse no nó do projeto mytoolchain e selecione Novo > Outros. </li> |
| <li>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. <br><br> O IDE cria <tt>layer.xml</tt> no nó Pacotes de Código-fonte, no pacote principal <tt>org.myhome.mytoolchain</tt> e abre <tt>layer.xml</tt> no editor.</li> |
| <li>Se o arquivo contiver uma tag <tt><filesystem/></tt>, substitua-a pelas tags <tt>filesystem</tt> de abertura e fechamento:<pre><tt><filesystem></tt> |
| |
| <tt></filesystem></tt></pre></li> |
| |
| <li>Copie e cole o texto seguinte dentro da tag <tt>layer.xml</tt> na tag <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>Abra o arquivo <tt>Bundle.properties</tt> e adicione a seguinte string:<br> <tt>CND/ToolChains/GNU_tuned=My GNU Tuned Tool Collection</tt></li> |
| |
| <li>Crie um subpacote <tt>toolchain</tt> clicando com o botão direito do mouse no pacote <tt>org.myhome.mytoolchain</tt> em Pacotes de Código-fonte e selecionando Novo > Pacote Java. Substitua o nome do pacote default <tt>newpackage</tt> por <tt>toolchain</tt> e clique em Finalizar. O IDE cria o subpacote <tt>org.myhome.mytoolchain.toolchain</tt>. </li> |
| <li>Crie um novo arquivo, clicando com o botão direito do mouse no subpacote <tt>org.myhome.mytoolchain.toolchain</tt> e selecionando Novo > Arquivo Vazio. Chame o projeto de <tt>GNU_tuned_flavor.xml</tt> e clique em Finalizar. |
| <p class="notes">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.</p> |
| <p>Este arquivo é o descritor de coleção de ferramentas para a nova coleção de ferramentas.</p></li> |
| |
| <li>Copie e cole o texto seguinte em <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>Crie outro arquivo novo, clicando com o botão direito do mouse no subpacote <tt>org.myhome.mytoolchain.toolchain</tt> e selecionando Novo > Arquivo Vazio. Chame o projeto de <tt>GNU_tuned_cpp.xml</tt> e clique em Próximo. |
| |
| <li>Copie e cole o texto seguinte em <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>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.</p> |
| <p>A árvore do projeto deve ter uma aparência semelhante à seguinte:</p> |
| <img alt="tela da árvore do Projeto" class="margin-around b-all" src="../../../images_www/articles/73/cnd/toolchain/project.png" title="Árvore do projeto"> |
| <p>As pastas Teste de Unidade talvez não exista.</p> |
| </li> |
| <li>Na janela Projetos, clique com o botão direito do mouse no nó do projeto <tt>mytoolchain</tt> 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.</li> |
| <li>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.</li> |
| <li>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. |
| <p>O IDE mostra a nova coleção de ferramentas:</p> |
| <img alt="tela da janela Opções" class="margin-around b-all" src="../../../images_www/articles/73/cnd/toolchain/options.png" title="Painel Opções"> |
| </li> |
| <li>Crie um novo projeto C/C++ de amostra <tt>Bem-Vindo</tt> selecionando Arquivo > Novo Projeto > Amostras > C/C++ > Bem-Vindo. |
| <li>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. </li> |
| <li>Construa o projeto. Observe que o compilador tem os flags <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>Na caixa de diálogo Propriedades do Projeto, selecione a coleção de ferramentas GNU e clique em OK.</li> |
| <li>Construa o projeto novamente e compare a linha compilada na janela de saída: |
| <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>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.</p> |
| <p class="notes">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:</p> |
| <ol><li>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.</li> |
| <li>Selecione Ferramentas > Plug-ins e clique na guia Submetido a Download na caixa de diálogo Plug-ins. |
| </li> |
| <li>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.</li> |
| <li>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. |
| </li> |
| <li>Clique em Próximo para avançar pelo instalador e continuar até que a instalação seja finalizada.</li> |
| <li>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.</li> |
| <li>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. |
| </li></ol> |
| |
| |
| |
| <h3><a name="details"></a>Detalhes do Arquivo XML da Coleção de Ferramentas</h3> |
| <p>Trata-se de uma descrição das tags mais importantes do arquivo xml da coleção de ferramentas. |
| </p> |
| <p class="tips">Para obter um esquema de todas as tags e atributos suportados dos arquivos xml de toolchain, você pode pesquisar o arquivo <tt>toolchaindefinition.xsd</tt> na <a href="http://hg.netbeans.org/cnd-main">árvore do código-fonte do NetBeans IDE</a>.</p> |
| |
| <h4>Tags de definição da coleção de ferramentas</h4> |
| <table> |
| <tbody> |
| <tr> |
| <th class="tblheader" scope="col">Tags</th> |
| <th class="tblheader" scope="col">Atributos</th> |
| <th class="tblheader" scope="col">Descrição</th> |
| </tr> |
| <tr> |
| <td class="tbltd1">toolchain</td> |
| <td class="tbltd1"></td> |
| <td class="tbltd1">Nome da coleção de ferramentas</td> |
| </tr> |
| <tr> |
| <td class="tbltd1"></td> |
| <td class="tbltd1">nome</td> |
| <td class="tbltd1">Nome da coleção de ferramentas</td> |
| </tr> |
| <tr> |
| <td class="tbltd1"></td> |
| <td class="tbltd1">exibição</td> |
| <td class="tbltd1">Nome de exibição da coleção de ferramentas</td> |
| </tr> |
| <tr> |
| <td class="tbltd1"></td> |
| <td class="tbltd1">família</td> |
| <td class="tbltd1">Nome do grupo da coleção de ferramentas</td> |
| </tr> |
| <tr> |
| <td class="tbltd1">plataformas</td> |
| <td class="tbltd1"></td> |
| <td class="tbltd1">Plataformas suportadas</td> |
| </tr> |
| <tr> |
| <td class="tbltd1"></td> |
| <td class="tbltd1">stringvalue</td> |
| <td class="tbltd1">Lista das plataformas suportadas separadas por vírgula.<br> Os valores possíveis são: |
| <ul> |
| <li>linux</li> |
| <li>unix</li> |
| <li>sun_intel</li> |
| <li>sun_sparc</li> |
| <li>windows</li> |
| <li>mac</li> |
| <li>none</li> |
| </ul> |
| </td> |
| </tr> |
| <tr> |
| <td class="tbltd1">makefile_writer</td> |
| <td class="tbltd1"></td> |
| <td class="tbltd1">Escritor de makefile personalizado.</td> |
| </tr> |
| <tr> |
| <td class="tbltd1"></td> |
| <td class="tbltd1">classe</td> |
| <td class="tbltd1">Nome da classe do escritor de makefile personalizado. Deve implementar<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">Prefixo especial para nomes de arquivos</td> |
| </tr> |
| <tr> |
| <td class="tbltd1"></td> |
| <td class="tbltd1">stringvalue</td> |
| <td class="tbltd1">"/" para unix<br>"/cygdrive/" para cygwin no Windows</td> |
| </tr> |
| <tr> |
| <td class="tbltd1">base_folders</td> |
| <td class="tbltd1"></td> |
| <td class="tbltd1">Contêiner das tags base_folder. <br> Uma ou mais tags base_folder estão contidas em uma tag base_folders. </td> |
| </tr> |
| |
| <tr> |
| <td class="tbltd1">base_folder</td> |
| <td class="tbltd1"></td> |
| <td class="tbltd1">Descrição do diretório-base dos compiladores.<br> Este tag pode conter as seguintes tags:</td></tr> |
| |
| |
| |
| |
| <tr> |
| <td class="tbltd1"></td> |
| <td class="tbltd1">regestry</td> |
| <td class="tbltd1">Chave de registro do Windows da ferramenta. Observe que a tag XML deve ser escrita "regestry" embora seja um erro ortográfico. </td> |
| </tr> |
| <tr> |
| <td class="tbltd1"></td> |
| <td class="tbltd1">pattern</td> |
| <td class="tbltd1">Expressão regular que permite que o NetBeans IDE localize o compilador no registro</td> |
| </tr> |
| <tr> |
| <td class="tbltd1"></td> |
| <td class="tbltd1">suffix</td> |
| <td class="tbltd1">Pasta com os arquivos executáveis</td> |
| </tr> |
| <tr> |
| <td class="tbltd1"></td> |
| <td class="tbltd1">path_patern</td> |
| <td class="tbltd1">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.</td> |
| </tr> |
| |
| |
| <tr> |
| <td class="tbltd1">command_folders</td> |
| <td class="tbltd1"></td> |
| <td class="tbltd1">Contêiner das tags command_folder. <br> Uma ou mais tags commander_folder estão contidas em uma tag command_folders. </td> |
| </tr> |
| <tr> |
| <td class="tbltd1">command_folder</td> |
| <td class="tbltd1"></td> |
| <td class="tbltd1">Descreve o diretório no qual se encontram os comandos do tipo UNIX.<br> Necessários somente para compiladores MinGW no Windows. A tag command_folder pode conter as seguintes tags:</td></tr> |
| |
| |
| <tr> |
| <td class="tbltd1"></td> |
| <td class="tbltd1">regestry</td> |
| <td class="tbltd1">Chave de comandos de registro do Windows. Observe que a tag XML deve ser escrita "regestry" embora seja um erro ortográfico.</td> |
| </tr> |
| <tr> |
| <td class="tbltd1"></td> |
| <td class="tbltd1">pattern</td> |
| <td class="tbltd1">Expressão regular que permite que o NetBeans IDE localize a pasta de comandos no registro</td> |
| </tr> |
| <tr> |
| <td class="tbltd1"></td> |
| <td class="tbltd1">suffix</td> |
| <td class="tbltd1">Pasta com os arquivos executáveis</td> |
| </tr> |
| <tr> |
| <td class="tbltd1"></td> |
| <td class="tbltd1">path_patern</td> |
| <td class="tbltd1">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. |
| |
| </td> |
| </tr> |
| <tr> |
| <td class="tbltd1">scanner</td> |
| <td class="tbltd1"></td> |
| <td class="tbltd1">Nome do serviço de parser de erros, consulte <a href="#errorhandler">Criando um Handler de Erros Personalizado para o Compilador</a> </td> |
| </tr> |
| <tr> |
| <td class="tbltd1"></td> |
| <td class="tbltd1">id</td> |
| <td class="tbltd1">Nome do serviço de parser de erros</td> |
| </tr> |
| </tbody> |
| </table> |
| <h4>Flags do Compilador</h4> |
| <p>Esta tabela lista as tags usadas para descrever os compiladores e especificar os flags do compilador para toolchain.</p> |
| <table> |
| <tbody> |
| <tr> |
| <th class="tblheader" scope="col">Tags</th> |
| <th class="tblheader" scope="col">Descrição</th> |
| <th class="tblheader" scope="col">Exemplo de compilador GNU</th> |
| </tr> |
| <tr> |
| <td class="tbltd1">c,cpp</td> |
| <td class="tbltd1">O conjunto de flags do compilador está localizado nos subnós a seguir</td> |
| <td class="tbltd1"></td> |
| </tr> |
| |
| <tr> |
| <td class="tbltd1">reconhecedor</td> |
| <td class="tbltd1">Expressão regular que permite que o IDE localize o compilador</td> |
| <td class="tbltd1">Para GNU em cygwin no Windows<br>.*[\\/].*cygwin.*[\\/]bin[\\/]?$</td> |
| </tr> |
| <tr> |
| <td class="tbltd1">compilador</td> |
| <td class="tbltd1">Nome do compilador (nome do arquivo executável)</td> |
| <td class="tbltd1">gcc ou g++</td> |
| </tr> |
| <tr> |
| <td class="tbltd1">versão</td> |
| <td class="tbltd1">Flag de versão</td> |
| <td class="tbltd1">--version</td> |
| </tr> |
| <tr> |
| <td class="tbltd1">system_include_paths</td> |
| <td class="tbltd1">Flags para obter caminhos de inclusão do sistema</td> |
| <td class="tbltd1">-x c -E -v</td> |
| </tr> |
| <tr> |
| <td class="tbltd1">system_macros</td> |
| <td class="tbltd1">Flags para obter as macros do sistema</td> |
| <td class="tbltd1">-x c -E -dM</td> |
| </tr> |
| <tr> |
| <td class="tbltd1">user_include</td> |
| <td class="tbltd1">Flag para adicionar caminho de inclusão do usuário</td> |
| <td class="tbltd1">-I</td> |
| </tr> |
| <tr> |
| <td class="tbltd1">user_macro</td> |
| <td class="tbltd1">Flag para adicionar macro do usuário</td> |
| <td class="tbltd1">-D</td> |
| </tr> |
| <tr> |
| <td class="tbltd1">development_mode</td> |
| <td class="tbltd1">Grupos de flags para diferentes modos de desenvolvimento</td> |
| <td class="tbltd1"></td> |
| </tr> |
| <tr> |
| <td class="tbltd1">warning_level</td> |
| <td class="tbltd1">Grupos de flags para diferentes níveis de advertência</td> |
| <td class="tbltd1"></td> |
| </tr> |
| <tr> |
| <td class="tbltd1">architecture</td> |
| <td class="tbltd1">Grupos de flags para diferente arquitetura</td> |
| <td class="tbltd1"></td> |
| </tr> |
| <tr> |
| <td class="tbltd1">strip</td> |
| <td class="tbltd1">Flag para informações de depuração de faixa</td> |
| <td class="tbltd1">-s</td> |
| </tr> |
| <tr> |
| <td class="tbltd1">c_standard</td> |
| <td class="tbltd1">Especifica os flags para usar os padrões C. Use com as tags c89 e 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">Especifica os flags para usar os padrões C++. Use com as tags cpp98 e 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">Flags para especificar o arquivo do objeto</td> |
| <td class="tbltd1">-o <i>(deve ter o seguinte espaço -o)</i></td> |
| </tr> |
| <tr> |
| <td class="tbltd1">dependency_generation</td> |
| <td class="tbltd1">Flags de geração de dependência</td> |
| <td class="tbltd1">-MMD -MP -MF $@.d</td> |
| </tr> |
| <tr> |
| <td class="tbltd1">precompiled_header</td> |
| <td class="tbltd1">Flag do cabeçalho pré-compilado</td> |
| <td class="tbltd1">-o $@</td> |
| </tr> |
| <tr> |
| <td class="tbltd1">multithreading</td> |
| <td class="tbltd1">Grupos de flags de suporte a multithreading</td> |
| <td class="tbltd1">Só para a coleção de ferramentas do Oracle Solaris Studio; não usado para as coleções de ferramentas com base em GNU</td> |
| </tr> |
| <tr> |
| <td class="tbltd1">standard</td> |
| <td class="tbltd1">Grupos de flags para diferentes padrões de linguagem</td> |
| <td class="tbltd1">Só para a coleção de ferramentas do Oracle Solaris Studio; não usado para as coleções de ferramentas com base em GNU</td> |
| </tr> |
| <tr> |
| <td class="tbltd1">language_extension</td> |
| <td class="tbltd1">Grupos de flags para diferentes extensões de linguagem</td> |
| <td class="tbltd1">Só para a coleção de ferramentas do Oracle Solaris Studio; não usado para as coleções de ferramentas com base em GNU/td> |
| </tr> |
| </tbody> |
| </table> |
| <h2><a name="provider"></a>Criando um Provedor de Compilador Personalizado</h2> |
| <p>O NetBeans IDE possui um provedor de compilador default:<br> org.netbeans.modules.cnd.toolchain.compilers.MakeProjectCompilerProvider <br> Este provedor funciona bastante bem na maioria dos toolchains, mas você pode criar seu próprio provedor.</p> |
| <p> |
| <b>Para criar seu próprio provedor de compilador:</b></p> |
| <ul> |
| <li>amplie a classe abstrata org.netbeans.modules.cnd.api.compilers.CompilerProvider |
| </li> |
| <li>defina a classe como serviço e coloque-a antes do provedor default: |
| <pre> |
| @org.openide.util.lookup.ServiceProvider(service = org.netbeans.modules.cnd.spi.toolchain.CompilerProvider.class, |
| position=500) |
| public class CustomCompilerProvider extends CompilerProvider { |
| ... |
| } |
| </pre> |
| 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. |
| </li> |
| </ul> |
| |
| <h2><a name="errorhandler"></a>Criando um Handler de Erros Personalizado para o Compilador</h2> |
| |
| <p>O NetBeans IDE possui dois handlers de erros do compilador default.</p> |
| <ul><li>para compilador GNU</li> |
| <li>para compilador Sun Studio</li> |
| </ul> |
| |
| <p>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.</p> |
| <p> |
| <b>Para criar seu próprio handler de erro do compilador: </b> |
| </p> |
| <ul><li>estenda a classe abstrata org.netbeans.modules.cnd.api.compilers.CompilerProvider |
| |
| </li> |
| <li>defina a classe como serviço: |
| <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>vincule o scanner de erros e a descrição da coleção de ferramentas usando o ID: |
| <pre></scanner id="MyParser"> |
| ... |
| </scanner></pre> |
| </li> |
| </ul> |
| |
| <h2>Consulte Também</h2> |
| <p>Consulte a <a href="https://netbeans.org/kb/trails/cnd.html">Trilha do Aprendizado C/C++</a> para obter mais artigos sobre o desenvolvimento com C/C++/Fortran no NetBeans IDE.</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">Enviar Feedback neste Tutorial</a></div> |
| <br style="clear: both;"> |
| </body></html> |