Conan é um gerenciador de pacotes de software destinado a desenvolvedores C e C++.
Funciona em todos os sistemas operacionais, incluindo Windows, Linux, macOS, FreeBSD, Solaris e outros, e pode ser direcionado a qualquer plataforma, incluindo desktop, servidor e construção cruzada para dispositivos embarcados e bare metal.
Ele se integra com outras ferramentas como Docker, MinGW, WSL e com todos os sistemas de construção, como CMake, MSBuild, Makefiles, Meson, SCons. Ele pode até mesmo se integrar com qualquer sistema de construção proprietário.
Conan é totalmente gratuito, de código aberto e totalmente descentralizado. O repositório central ConanCenter contém centenas de pacotes de bibliotecas de código aberto populares, com muitos binários pré-compilados .
Existem diversas maneiras de instalar o Conan . Dentre as possibilidades você pode usar o Portage no Gentoo ou Funtoo, da seguinte forma:
emerge dev-util/conan
No Arch Linux você pode usar o Yay:
# sem sudo
yay -S conan
Você também pode baixar os pacotes .deb, .rpm, tarball diretamente por aqui e instalar:
Ou até mesmo instalar via pip, segundo eles, mais recomendado:
Antes você precisará do Pip instalado, exemplo para sistemas que utilizam o APT:
sudo apt install python3-pip
E basta rodar assim:
pip3 install conan
Se tiver algum problema na instalação, tente somente para seu usuário:
pip3 install conan --user
Vamos começar com um exemplo básico, vamos criar um aplicativo de calcula a hash MD5 e que usa uma das bibliotecas mais populares para o C++: Poco. Usaremos o CMake como sistema de construção neste caso, mas tenha em mente que Conan funciona com qualquer sistema de construção e não se limita a usar somente o CMake.
mkdir mymd5 && cd mymd5
vim md5.cpp
Este será o arquivo fonte de nosso aplicativo:
#include "Poco/MD5Engine.h"
#include "Poco/DigestStream.h"
#include <iostream>
int main(int argc, char** argv){
Poco::MD5Engine md5;
Poco::DigestOutputStream ds(md5);
std::string str = {};
if( argc > 1 ){
str = argv[1];
}else{
std::cout << "Informe a palavra para gerar a HASH MD5." << '\n';
exit(0);
}
ds << str;
ds.close();
std::cout << Poco::DigestEngine::digestToHex(md5.digest()) << '\n';
return 0;
}
Podemos fazer a pesquisa direto pelo navegador no link: https://conan.io/center, ou usar o conan
via linha de comando:
conan search poco --remote=conan-center
A opção
--remote=conan-center
pede pra fazer a pesquisa online, pode ser ignorada a menos que você tenha o arquivoremotes.json
devidamente configurado no diretório:$HOME/.conan/remotes.json
.
A saída será similar a isso:
user@host ~/mymd5
Existing package recipes:
poco/1.8.1
poco/1.9.3
poco/1.9.4
poco/1.10.0
poco/1.10.1
user@host ~/mymd5
Suponhamos que você usou o comando conan inspect poco/1.9.4
(Use o help para mais informações: conan --help
) para inspecionar essa versão e é justamente a versão que você deseja, então basta instalá-lo. Para isso crie um arquivo de nome: conanfile.txt
dentro do seu projeto( nesse caso, o projeto: mymd5 ) com as seguintes informações:
[requires]
poco/1.9.4
[generators]
cmake
Certifique-se de ter o CMake instalado. Isso vai gerar o arquivo
conanbuildinfo.cmake
.
Para isso rode os comando:
conan profile update settings.compiler.libcxx=libstdc++11 default
Se quiser que o Conan detecte automaticamente rode:
conan profile new default --detect
, se a ABI do seu compilador não for compatível você receberá um “belo de um warning” e precisará rodar o comando indicado logo acima de qualquer forma.
Esse comando irá configurar o arquivo no caminho: $HOME/.conan/profiles/default
, mais ou menos assim:
[settings]
os=Linux
os_build=Linux
arch=x86_64
arch_build=x86_64
compiler=gcc
compiler.version=9
compiler.libcxx=libstdc++11
build_type=Release
[options]
[build_requires]
[env]
Para isso basta rodar os comandos:
mkdir build && cd build
conan install ..
A saída será similar a isso:
Agora vamos criar o arquivo CMakeLists.txt
baseado no arquivo: conanbuildinfo.cmake
vim CMakeLists.txt
- Fora do diretóriobuild
, na raiz do seu projeto.
cmake_minimum_required(VERSION 2.8.12)
project(MD5Encrypter)
add_definitions("-std=c++11")
include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake)
conan_basic_setup()
add_executable(md5 md5.cpp)
target_link_libraries(md5 ${CONAN_LIBS})
Para Linux ou macOS rode esse comando:
cmake .. -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release
make
Pronto, foi gerado o binário md5
dentro do diretório bin/md5
e já podemos testá-lo
Simples, né?!
Para mais informações consulte o repositório oficial do Conan.
Então se inscreva nos nossos Cursos de C++ Moderno . Você aprender criar:
Acesse o endereço: