9. uilian@local $ mkdir build && cd build && cmake ..
-- Could NOT find Boost
main.cpp:5:27: fatal error: boost/regex.hpp: No such file or
directory
#include <boost/regex.hpp>
^
compilation terminated.
15. $ sudo pip install conan
$ conan new profile default --detect
It seems to be the first time you run conan
Auto detecting your dev setup to initialize conan.conf
Found gcc 6.3
Default conan.conf settings
os=Linux
arch=x86_64
compiler=gcc
compiler.version=6.3
build_type=Release
*** You can change them in ~/.conan/conan.conf ***
*** Or override with -s compiler='other' -s ...s***
Instalação
Utilizando pip
21. Conan
Numa casca
de noz
● Nomeação de pacotes
● Setup do sistema
● Distribuição de artefatos
● Cache local
22. Pacote
Estrutura do
nome
Estrutura do pacote:
name/version@user/channel
Exemplo:
Poco/1.7.5@lasote/stable
Poco/1.7.5@lasote/testing
Poco/1.7.5@lasote/ci
Poco/1.7.9@pocoproject/stable
30. Cache Local - 1 receita, N pacotes
localhost
conanfile.txt
amd64
Boost/1.64.0@bincrafters/stable
configN
i386
$ conan search
Lista todos pacotes na cache
34. Pacote Hello World!
● Todos devem participar
● Criar receita Conan para construir o projeto
● Deverá ser criado um biblioteca com apenas uma função:
○ void helloWord();
35. $ conan new --bare hello/0.1.0
$ tree
.
└── conanfile.py
0 directories, 1 files
Hands-on
Como criar uma
receita do zero
36. # conanfile.py
from conans import ConanFile, tools
class HelloConan(ConanFile):
name = "hello"
version = "0.1.0"
settings = "os", "arch", "compiler", "build_type"
def package_info(self):
self.cpp_info.libs = tools.collect_libs(self)
Hands-on
Criando uma
receita do zero
37. # hello.h
#pragma once
void helloWorld();
# hello.cpp
#include "hello.h"
#include <iostream>
void helloWorld() {
std::cout << "Hello World!n";
}
Hands-on
Como criar uma
receita do zero
39. from conans import ConanFile, CMake, tools
class HelloConan(ConanFile):
name = "hello"
version = "0.1.0"
settings = "os", "arch", "compiler", "build_type"
exports_sources = “*”
generators = “cmake”
def build(self):
cmake = CMake(self)
cmake.configure()
cmake.build()
def package(self):
self.copy(pattern="*.h", dst=”include”, src=”.”)
self.copy(pattern="*", dst=”lib”, src=”lib”)
def package_info(self):
self.cpp_info.libs = tools.collect_libs(self)
Hands-on
Como criar uma
receita do zero
40. $ conan new --sources hello/0.1.0
$ tree
.
├── conanfile.py
└── src
├── CMakeLists.txt
├── hello.cpp
└── hello.h
1 directory, 4 files
Hands-on
Como criar uma
receita do zero
41. $ conan create uilian/testing
● Exportar os fontes
● Gerar cmakebuildinfo
● Executar CMake (configure,build)
● Empacotar artefatos (headers,libs)
Hands-on
Criando uma
receita do zero
43. Pacote Hello World!
● Todos devem participar
● Criar diretório com nome test_package
● Criar aplicação que consome a biblioteca hello
● Criar receita Conan para construir o teste