1
Obrigado

Algumas palavras de agradecimento nunca são demais.

Instalar uma biblioteca (library) compilada no Codeblocks com o MinGW

Como usar uma das versões do CodeBlocks compatível com o compilador MinGW para recuperar binários de bibliotecas externas? Conheça neste artigo, os requisitos necessários para instalar uma biblioteca compilada no Codeblocks a partir do MinGW e alguns métodos para ter sucesso na operação.





Requisitos

  • Dispor de uma versão de Codeblocks que trabalhe com o compilador MinGW.
  • Ter o binário de uma biblioteca externa que também esteja compilada para MinGW.


No exemplo abaixo, usaremos a biblioteca libcurl para demonstrar o método escolhido. Saiba que, o método pode ser utilizado com Codeblocks utilizando MinGW para qualquer biblioteca compilada para MinGW.

Métodos

Descompactação em um diretório que centraliza as bibliotecas externas utilizadas

Descompacte o arquivo que contém a biblioteca compilada em um diretório não muito complicado, de preferência nome sem espaços, por exemplo
c:\libs\curl-7.28.1-devel-mingw32\


Integração ao projeto Codeblocks: 2 etapas

Tem duas coisas a considerar ao usar o Codeblocks para que um projeto possa integrar uma biblioteca adicional:

1. Indicar ao compilador o lugar onde se encontrar os arquivos com extensão H, permite que este gera erros quando inserimos as #include correspondentes à biblioteca no código fonte.

faremos esta indicação no Project - Build options…, depois fazemos um clique na raiz do projeto (no Debug ou Target, se não os parâmetros só se aplicariam no destino).

Na janela "Search directories" - Add - busque o diretório da biblioteca que contém as extensões H. Por exemplo, no caso de libcurl, no
c:\libs\curl-7.28.1-devel-mingw32\include
e seleciona esse diretório.

2. Indicar ao editor os links para poder encontrar os binários da biblioteca</bold>.

O fato de indicar ao editor links que servem para encontrar os binários da biblioteca, permite gerar o executável depois da compilação. No ambiente MinGW, os binários da biblioteca são os arquivos com extensão A

Isto será feito no Project - Build options... , depois clicamos na raiz do projeto, não no Debug nem no Target. Em caso contrário, os parâmetros só se aplicariam no destino, a menos que se utilize bibliotecas de depuração.

Busque na janela "Linker settings" - Add - o diretório da biblioteca que contém as extensões A (por exemplo, no caso do libcurl, no c:\libs\curl-7.28.1-devel-mingw32\lib) e selecionar as partes da biblioteca que o projeto necessita.

Observações

Arquivos DLL

Dependendo de como você configurar o seu projeto (link dinâmico ou estático), você pode ter que copiar .dll no diretório do executável (ou no PATH do Windows) para que o download dinâmico da biblioteca possa ser feito.


No caso da libcurl, as DLL estão no
c:\libs\curl-7.28.1-devel-mingw32\bin


Elas poderiam ser adicionadas, por exemplo, no diretório Target do projeto, contendo o executável gerado pela compilação (ou em algum lugar no PATH), e isso só será necessário em compilação com ligação dinâmica e, para lançar o executável fora do ambiente de desenvolvimento.

Se você ainda não fez, você verá, durante a execução (clicando duas vezes no arquivo EXE, ou seja, uma mensagem avisará que esta ou aquela DLL não foi encontrada.

Caminhos relativos ou absolutos

Durante a configuração dos Codeblocks (ver etapas 2.2.1 e 2.2.2), após selecionar um recurso, você deverá responder a esta pergunta Keep this as a relative path? (Maner este como um caminho relativo?)

Se a resposta for afirmativa, isso significa que o CodeBlocks não vai manter o caminho absoluto para o recurso especificado (ex:
c:\libs\curl-7.28.1-devel-mingw32\lib\libcurl.a
), mas apenas o caminho relativo em relação ao diretório do projeto (ex: algo como
..\..\..\libs\curl-7.28.1-devel-mingw32\lib\libcurl.a
).

É útil especificar um caminho relativo se os recursos estão disponíveis no diretório do projeto, pois o projeto permanecerá compilável em outra máquina com o CodeBlocks, já que os recursos estão no mesmo lugar em relação ao diretório do projeto e isso, seja qual for a localização do projeto na nova máquina.

Em compensação, se os recursos estiverem em outro lugar (é melhor colocá-los em outro lugar, para reunir as bibliotecas em um lugar identificado, onde os projetos poderão encontrá-los, como c:\libs e evitar duplicá-los), e se movermos o projeto, as referências serão quebradas. Neste caso, é melhor especificar caminhos absolutos.

Não copiar a biblioteca externa nos diretórios MinGW do Codeblocks

Isso pode funcionar e você poderá encontrar tutoriais que te dirão o que fazer.

No entanto, eu não recomendo isso, a menos que você queira:
  • bagunçar a instalação do CodeBlocks
  • ter que reinstalar todas as suas bibliotecas para atualizar o CodeBlocks ou o MinGW e os diretórios padrão do CodeBlocks ou do MinGW serão excluídos e recriados neste processo
  • não saber onde se encontra tal versão da biblioteca que só compila com tal fonte que você usa
  • não saber como atualizar suas bibliotecas

Terminologia

Nas linhas acima, utilizamos o termo biblioteca, embora o termo em inglês library seja muito usado pelos programadores.

Foto: © Roman Samborskyi - 123RF.com
Veja também
Este documento, intitulado 'Instalar uma biblioteca (library) compilada no Codeblocks com o MinGW ', está disponível sob a licença Creative Commons. Você pode copiar e/ou modificar o conteúdo desta página com base nas condições estipuladas pela licença. Não se esqueça de creditar o CCM (br.ccm.net) ao utilizar este artigo.

Assine nossa newsletter!

Receba toda semana o melhor conteúdo

Assine nossa newsletter!