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.595 ]

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

Squid logando usuários em aplicações web

Comando MAKE

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

A duplicação do buffer de saída na chamada de sistema fork() do Linux

Utilizando a função QSort em 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