Tutorial: Instalar uma dependência de um registro baseado em Git

vcpkg usa um conceito chamado registros para gerenciar repositórios de pacotes. Por padrão, vcpkg localiza bibliotecas do registro público curado em https://github.com/Microsoft/vcpkg. Você pode adicionar registros privados ou de terceiros para disponibilizar pacotes adicionais para instalação.

Para obter informações sobre como criar seus próprios registros, leia o tutorial para publicar pacotes em um registro.

Os registros são configurados usando um vcpkg-configuration.json arquivo.

Neste tutorial, você aprenderá a:

Pré-requisitos

  • Um terminal
  • Um compiiler C++
  • vcpkg
  • CMake

1 - Crie um projeto

Em uma nova pasta, crie os seguintes arquivos de projeto:

Um arquivo de origem (main.cpp):

#include <iostream>
#include <beison.h>

int main()
{
    beison::Object obj;
    obj.insert("name", beison::Value::string("demo"));
    std::cout << beison::stringify(obj) << std::endl;
    return 0;
}

Um arquivo de projeto CMake (CMakeLists.txt):

cmake_minimum_required(VERSION 3.18)

project(demo CXX)

add_executable(main main.cpp)

find_package(beicode CONFIG REQUIRED)
find_package(beison CONFIG REQUIRED)
target_link_libraries(main PRIVATE beicode::beicode beison::beison)

2 - Crie os arquivos de manifesto e configuração

Execute o comando a seguir:

vcpkg new --application

O new command cria dois arquivos: um arquivo de manifesto () e um arquivo configuration(vcpkg.jsonvcpkg-configuration.json). Normalmente, o comando requer que os --name argumentos e --version sejam fornecidos, mas como este tutorial é um aplicativo de usuário final, usamos a --application opção em vez disso.

Os arquivos gerados terão os seguintes conteúdos:

vcpkg.json

{}

vcpkg-configuration.json

{
  "default-registry": {
    "kind": "git",
    "baseline": "7476f0d4e77d3333fbb249657df8251c28c4faae",
    "repository": "https://github.com/microsoft/vcpkg"
  },
  "registries": [
    {
      "kind": "artifact",
      "location": "https://github.com/microsoft/vcpkg-ce-catalog/archive/refs/heads/main.zip",
      "name": "microsoft"
    }
  ]
}

O arquivo de configuração gerado inclui duas definições do Registro. O default-registry que aponta para o registro vcpkg curado em https://github.com/Microsoft/vcpkg, usando a confirmação mais recente como linha de base, e um registro adicional"artifacts", que para os fins deste tutorial é desnecessário e pode ser excluído.

3 - Adicione registros privados ao seu arquivo de configuração vcpkg

O código-fonte faz referência a duas bibliotecas que não estão disponíveis no registro curado vcpkg. Para satisfazer essas dependências, precisamos adicionar https://github.com/NorthWindTraders/vcpkg-registry como um registro adicional.

Modifique o conteúdo de vcpkg-configuration.json :

{
  "default-registry": {
    "kind": "git",
    "baseline": "7476f0d4e77d3333fbb249657df8251c28c4faae",
    "repository": "https://github.com/microsoft/vcpkg"
  },
  "registries": [
    {
      "kind": "git",
      "repository": "https://github.com/northwindtraders/vcpkg-registry",
      "baseline": "dacf4de488094a384ca2c202b923ccc097956e0c",
      "packages": [ "beicode", "beison" ]
    }
  ]
}

O arquivo de configuração adiciona um registro externo como a origem para os beicode pacotes e beison . Os registros adicionais devem declarar explicitamente os pacotes que fornecem usando a "packages" lista. Quando vcpkg resolve nomes de pacotes para um registro, qualquer nome de pacote não encontrado em um registro adicional será padronizado para o "default-registry". Saiba mais sobre a resolução de nomes de pacotes na documentação de registros.

4 - Instalar pacotes a partir de um registro

Uma vez que um registro foi adicionado ao arquivo de configuração, nada de especial precisa ser feito para instalar pacotes a partir dele. vcpkg irá resolver de forma transparente os nomes dos pacotes no seu vcpkg.json registro correto ao seguir o maquinário de instalação usual.

Adicione as beicode dependências e beison em seu vcpkg.json arquivo:

vcpkg add port beicode beison

Compile e execute o projeto (substitua $VCPKG_ROOT pelo caminho de instalação vcpkg):

cmake -B build -S . -DCMAKE_TOOLCHAIN_FILE=$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake
cmake --build build

Execute o programa, a saída deve ter esta aparência:

{
    "name": "demo"
}

Próximas etapas

  • Bloqueie suas versões para compilações repetíveis usando o controle de versão
  • Reutilizar binários em execuções de integração local ou contínua usando cache binário
  • Gerenciar suas bibliotecas particulares usando registros personalizados