Usando CMake com a libcurl c/c++

Israel Junior
AprendaCPP
Published in
2 min readSep 19, 2017

como usar o cmake para compilar projetos em c/c++ com a libcurl

usando cmake with libcurl

A libcurl é uma biblioteca open-source para transferencia de arquivos multiplataforma, multi-protocolos criada pelo Daniel Stenberg originalmente escrita em linguagem c mas portada para praticamente todas as linguagens mais populares.

A libcurl é a base para uma ferramenta de linha de comando curl, muito conhecida para quem trabalha em ambientes Unix/GNU-Linux.

Inicio

Dando continuidade ou artigo anterior "Usando cmake para compilar c/c++", hoje eu vou mostrar como podemos usar o cmake para compilar projetos com bibliotecas de terceiros.

para começar vamos instalar a libcurl como mostrado abaixo.

# para linux like ubuntu.
$ sudo apt-get install curl libcurl4-openssl-dev
# para linux like redhat/Fedora.
$ yum install curl curl-devel
# para mac os x, já instalado por default.

Uma vez que tenhamos a libcurl instalada em nosso sistema, vamos construir um pequeno projeto que faça o download de um arquivo html e extraia o content-type da pagina.

Criando nosso projeto

Crie um novo diretório como mostrado abaixo.

$ cd ~/
$ mkdir samleLibCurl && cd sampleLibCurl
$ mkdir src
$ ls
./ ../ src/

Agora vamos criar o nosso código fonte do projeto no diretório src criado acima para mantermos uma melhor organização, crie o arquivo httpg.c dentro do diretório src/ com o conteúdo listado abaixo.

Agora temos que criar o nosso script de compilação para o cmake no diretório raiz com o nome de CMakeLists.txt, com o conteúdo abaixo.

O nosso projeto vai ter uma estrutura atual como a mostrada abaixo.

sampleLibCurl/
CMakeLists.txt
src/
httpg.c

Dentro do CMakeLists.txt adicionamos duas novas diretivas uma é a file(GLOB_RECURSE SOURCES src/*.c) que indica ao cmake onde ele deve procurar os sources do projeto e a outra é a find_package() que indica ao cmake que ele deve procurar pela biblioteca chamada curl "libcurl" e se encontrar "if(CURL_FOUND)" adicionar o diretório de includes da biblioteca ao projeto e incluir as flags de lincagem ao binário na compilação.

Compilando com CMake

Para finalizar vamos compilar nosso projeto e fazer um teste.

$ mkdir build && cd build
$ cmake ../
$ make
$ ./bin/httpg
Pagina encontrada com sucesso !!!
O Content-Type da pagina é :text/html

Para facilitar o entendimento eu subi um projeto de exemplo no meu github aqui.

--

--

Israel Junior
AprendaCPP

Lifelong learner still trying to learn the secret of strength. Full Stack Web Developer working with Ruby on Rails, Node.JS and Serverless.