Gerenciando pacotes para C/C++ com Conan

Este artigo tem como objetivo introduzir a ideia por trás do projeto Conan, um gerente de pacotes com foco em desenvolvedores C e C++. Aqui serão abordados os tópicos sobre instalação, uso e aplicação em um projeto simples.

[ Hits: 9.279 ]

Por: Uilian Ries em 19/12/2016 | Blog: https://uilianries.github.io


Utilização



Agora veremos como Conan poderá ser útil em projetos de todas as escalas. Para isso, iremos utilizar um exemplo simples, envolvendo:
  • C++
  • CMake
  • Conan
  • Boost

Embora eu não tenha comentado até aqui, CMake [1] é gerente de para construção de processos, largamente utilizado e bem aceito no mercado. Ele consegue gerar saídas, como Makefile, utilizando uma linguagem de script própria.

Vamos ao nosso exemplo de código:

#include <boost/algorithm/string.hpp>
#include <string>
#include <iostream>

int main() {
    const std::string mensagem = "Viva o Linux";
    std::cout << boost::algorithm::to_upper_copy(mensagem) << '
';
    return 0;
}

Neste exemplo, vemos a utilização da biblioteca Boost para manter a mensagem "Viva o Linux" em caixa alta. A linha 7 realiza cópia da variável "mensagem" e a mesma cópia será data em caixa alta. Ainda na mesma linha, a mensagem será enviada para stdout.

Para que possamos dizer ao Conan a nossa dependência com a Boost, devemos preencher um arquivo de configuração, junto nosso arquivo de código. Este mesmo arquivo deve possuir o nome "conanfile.txt" e também deverá seguir a seguinte estrutura:

[requires]
Boost/1.60.0@lasote/stable

[generators]
cmake

A estrutura vista acima lembra o formato ".INI". A sessão "requires" deverá conter a lista de pacotes de desejamos incluir no nosso projeto. Neste caso, eu adicionei a versão estável da Boost 1.60. Ainda no final, a sessão "generators" indica qual a saída será utilizada, o qual foi optada por CMake.

Lembre-se que na página anterior, há a informação de como busca por pacotes.

Agora que possuímos a receita para o nosso projeto, devemos construir a saída, utilizando o Conan:

conan install .

Uma vez realizado o download dos pacotes, os mesmo estarão disponíveis em "~/.conan/data". Este diretório será usado sempre cache, e cada pacote persistido pode variar por versão de compilador utilizado.

O próximo passo consiste em construir o projeto utilizando CMake. Mas para que isso seja possível, primeiro vamos analisar os artefatos gerados pelo Conan.

O arquivo que teremos interesse neste momento, será o "conanbuildinfo.cmake".

Com isso, podemos utilizar a seguinte receita CMake para o nosso projeto:

cmake_minimum_required(VERSION 2.8)
project(vivaolinux)

include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake)
conan_basic_setup()

add_executable(vivaolinux main.cpp)
target_link_libraries(vivaolinux ${BOOST_LIBS})

Esta é uma receita básica do CMake, em mente, tente associar a uma receita de Makefile:
  • A linha 4 inclui o arquivo gerado pelo Conan, integrando a receita atual.
  • A linha 5 chama função de setup, dentro do arquivo gerado pelo Conan. Este setup carrega as variáveis utilizadas no contexto do CMake.
  • Observando a linha 8, a variável "${BOOST_LIBS}" carrega a lista de bibliotecas do projeto Boost. Esta variável será preenchida durante a chamada "conan_basic_setup".

Agora iremos gerar a saída em Makefile, com a ajuda do CMake:

cmake .
make

O programa gerado estará dentro do diretório bin local:

bin/vivaolinux
VIVA O LINUX
Pronto, temos um pequeno projeto em C++, utilizando Boost, sem a necessidade de resolver esta dependência manualmente.

[1] CMake

Conclusão

Este artigo demonstrou a possibilidade de resolver problemas de dependência por uso de bibliotecas terceiras, utilizando o projeto Conan.

Este gerente de dependência realizou download da biblioteca Boost, já compilada, de acordo com o ambiente e compilador desejado.

Além disso, observamos que existe uma larga lista de bibliotecas suportadas, e tudo é mantido pela comunidade, sendo ainda possível, realizar fork e contribuir com novas receitas para o projeto.

Este projeto corrigiu um antigo problema para os desenvolvedores C/C++, utilizar bibliotecas, sem a necessidade de construir em servidor local, mantendo o mesmo artefato para todos a que utilizam.

Página anterior    

Páginas do artigo
   1. Sobre Conan
   2. Instalação
   3. Procurar pacotes
   4. Utilização
Outros artigos deste autor

Instalando Facebook Folly através do Conan

Leitura recomendada

TORCS – Instalação e criação de um bot simples

Squid logando usuários em aplicações web

Comando MAKE

Tutorial SDL

Bibliotecas estáticas c/c++

  
Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts