Faça uma pergunta »

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

Setembro 2015


1. Pré-requisito


Você dispõe de uma versão do CodeBlocks que roda com o compilador MinGW e recuperou o binário de uma biblioteca externa que você quer usar e, que também foi compilado para o MinGW.
No exemplo a seguir, vamos usar a biblioteca libcurl para ilustrar o método a ser utilizado na data em que esta dica foi criada e para a versão atual estável da libcurl:
http://curl.haxx.se/gknw.net/7.28.1/dist-w32/curl-7.28.1-devel-mingw32.zip
(veja a versão atual no http://curl.haxx.se/download.html)

Este método pode ser usado com o Codeblocks usando o MinGW para qualquer biblioteca compilada para o MinGW.

2. Método

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


Descompacte o arquivo com a biblioteca compilada em um diretório não muito complicado e com um nome sem espaços.
Ex : c:\libs\curl-7.28.1-devel-mingw32\

2.2 Integração ao projeto Codeblocks : 2 etapas


No Codeblocks, há 2 coisas a fazer para que um projeto possa usar uma biblioteca adicional:

2.2.1 Indicar ao compilador onde ele deve encontrar os arquivos .h


Indicar ao compilador onde encontrar os arquivos .h, para evitar que ele cometa erros quando digitarmos #includes que correspondem à biblioteca no código fonte.

Isso é feito em: "Project - Build options..." - Clique na raiz do projeto (não nos alvos Debug ou Target, caso contrário, as configurações serão aplicadas ao alvo apenas)

Aba "Search directories" - Add - procure o diretório da biblioteca com os arquvos .h (por exemplo, no caso da libcurl c:\libs\curl-7.28.1-devel-mingw32\include) e selecione este diretório.

2.2.2 Indicar ao editor links para encontrar os binários da biblioteca


Indicar ao editor os links onde ele deverá encontrar os binários da biblioteca que lhe permitirá gerar o executável, após a compilação. Para o ambiente MinGW, os binários da biblioteca são arquivos cuja extensão é .a.

Isso é feito em: "Project - Build options..." - Clique na raiz do projeto (não nos alvos Debug ou Target, se não, as configurações serão aplicadas ao alvo apenas, a menos que você use bibliotecas de desbloqueio para uma determinada biblioteca, onde é útil distinguir, dependendo dos alvos)

Aba "Linker settings" - Add - procure o diretório com a biblioteca com os arquivos .a (ex: no caso da libcurl c c:\libs\curl-7.28.1-devel-mingw32\lib) e selecione as partes da biblioteca que precisamos, como parte do projeto.

Se você não souber, veja a documentação da biblioteca (refletidamente, compilar o projeto, ver as mensagens de erro e adicionar as partes necessárias ou, radicalmente, adicionar tudo).

3. Observações

3.1 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ãono c:\libs\curl-7.28.1-devel-mingw32\bin

Elas odriam 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.

3.2 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?".

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.

3.3 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 sua 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

3.4 Terminologia


Nas linhas acima, utilizamos o termo "biblioteca". O termo em inglês "library" é muito usado pelos programadores.

Tradução feita por Lucia Maurity y Nouira
Para uma leitura offline, é possível baixar gratuitamente este artigo no formato PDF:
Instalar-uma-biblioteca-library-compilada-no-codeblocks-com-o-mingw.pdf

Veja também

Na mesma categoria

Instalar una librería compilada en Codeblocks con MinGW
Por Carlos-vialfa em 31 de janeiro de 2013
Artigo original publicado por [Dal]. Tradução feita por pintuda.
Este documento, intitulado « Instalar uma biblioteca (library) compilada no Codeblocks com o MinGW  »a partir de CCM (br.ccm.net) está disponibilizado sob a licença Creative Commons. Você pode copiar, modificar cópias desta página, nas condições estipuladas pela licença, como esta nota aparece claramente.