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.
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.
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.
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.
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.
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:
Nas linhas acima, utilizamos o termo biblioteca, embora o termo em inglês library seja muito usado pelos programadores.
Foto: © Roman Samborskyi - 123RF.com