Antes de tudo, o que é VCPKG ?
Te respondo , é um gerenciador de pacotes tal como Pip (Python) ou Maven (Java) para o C++, que carecia de um gerenciador tão poderoso como esse.
Criado pela Microsoft, visa centralizar, gerenciar e utilizar os pacotes com Cmake e seu compilador para ser de fácil utilização seus pelos desenvolvedores
Te levarei por cada passo que é importante fazer para que o VCPKG funcione de forma coerente.
Aahh ia me esquecendo, também funciona para o Linux.
Começando pelo começo, este tutorial está voltado ao Windows.
Primeiro instale o Cmake em sua máquina.
Link : https://cmake.org/download/

Agora instale o Visual Studio Community, ele é necessário por conter o compilador de C e C++ necessários para compilar as bibliotecas.
Nota : Usaremos a versão comunity em inglês nesse tutorial.
Ao instalar o Visual Studio, selecione Desenvolvimento para desktop em C++.

Usando o Git Bash para baixar Vcpkg atráves do PowerShell (administrador) iremos começar o procedimento de instalação.
1
git clone https://github.com/Microsoft/vcpkg.git
Acesse a pasta
1
cd vcpkg/
Digite os comandos abaixo:
1
2
3
.\bootstrap-vcpkg.bat
.\vcpkg.exe integrate install
Ao final da instalação, irá aparecer o seguinte resultado.
1
-DCMAKE_TOOLCHAIN_FILE=D:/andreemidio/libraries/vcpkg/scripts/buildsystems/vcpkg.cmake
Essa informação é importante para quando criar um novo projeto C++ e precisar linkar as bibliotecas, é nesse local que o Cmake irá montar as informações.
Mais abaixo irei mostrar como usar essa configuração numa IDE.
Adicionando o Auto complete:
1
.\vcpkg.exe integrate powershell
Ainda no terminal na pasta do clone do VCPKG, testa o funcionamento instale a lib Curl, que serve para fazer chamadas HTTP.
1
.\vcpkg.exe install curl --debug
Usando o toolchain (VCPKG) em uma IDE
Para Clion da Jetbrains

Para o VSCODE da Microsoft
1
2
3
4
5
6
{
"cmake.configureSettings": {
"CMAKE_TOOLCHAIN_FILE": "D:/andreemidio/libraries/vcpkg/scripts/buildsystems/vcpkg.cmake" //Esse caminho se refere ao local onde instalei o VCPKG
},
"cmake.configureOnOpen": true,
}

Para o QT Creator (Qtzinho da massa para os intímos).
Tem uma pequena alteração na string de configuração, mas é simples, só mudar o caminho da pasta que está feito.
A configuração passo a passo está no gif meus bacanas.
1
2
3
-DCMAKE_TOOLCHAIN_FILE:STRING=D:/andreemidio/libraries/vcpkg/scripts/buildsystems/vcpkg.cmake

Código para testar a lib acima
CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
cmake_minimum_required(VERSION 2.8)
project(teste)
find_package(CURL CONFIG REQUIRED)
add_executable(teste main.cpp)
target_link_libraries(teste PRIVATE CURL::libcurl)
No arquivo de código :
main.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
#include <curl/curl.h>
static size_t WriteCallback(void *contents, size_t size, size_t nmemb, void *userp){
((std::string*)userp)->append((char*)contents, size * nmemb);
return size * nmemb;
}
int main(){
CURL * curl;
CURLcode res;
std::string readBuffer;
curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_URL, "http://pudim.com.br/");
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &readBuffer);
res = curl_easy_perform(curl);
curl_easy_cleanup(curl);
std::cout << readBuffer << std::endl;
}
return 0;
}
O resultado no terminal será algo que está abaixo
É o nosso saudoso pudim.com.br
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Pudim</title>
<link rel="stylesheet" href="estilo.css">
</head>
<body>
<div>
<div class="container">
<div class="image">
<img src="pudim.jpg" alt="">
</div>
<div class="email">
<a href="mailto:pudim@pudim.com.br">pudim@pudim.com.br</a>
</div>
</div>
</div>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-28861757-1', 'auto');
ga('send', 'pageview');
</script>
</body>
</html>
Desenvolvedor em Visão Computacional/Backend e membro do Grupo OpenCV Brasil.