Compartilhar via


Tutorial: Instalar e usar pacotes com o CMake no Visual Studio

Este tutorial mostra como criar um programa C++ "Hello World" que usa a fmt biblioteca com CMake, vcpkg e Visual Studio. Você instalará dependências, configurará, compilará e executará um aplicativo simples.

Pré-requisitos

1 - Configurar o vcpkg

  1. Clonar o repositório

    A primeira etapa é clonar o repositório vcpkg do GitHub. O repositório contém scripts para adquirir o executável vcpkg e um registro de bibliotecas de código aberto selecionadas mantidas pela comunidade vcpkg. Para fazer isso, execute:

    git clone https://github.com/microsoft/vcpkg.git
    

    O registro com curadoria vcpkg é um conjunto de mais de 2.000 bibliotecas de código aberto. Essas bibliotecas foram validadas pelos pipelines de integração contínua do vcpkg para trabalharem juntas. Embora o repositório vcpkg não contenha o código-fonte dessas bibliotecas, ele contém receitas e metadados para compilá-los e instalá-los em seu sistema.

  2. Executar o script de bootstrap

    Agora que você clonou o repositório vcpkg, navegue até o vcpkg diretório e execute o script de bootstrap:

    cd vcpkg && bootstrap-vcpkg.bat
    
    cd vcpkg; .\bootstrap-vcpkg.bat
    
    cd vcpkg && ./bootstrap-vcpkg.sh
    

    O script de bootstrap executa verificações de pré-requisitos e baixa o executável vcpkg.

    É isso! vcpkg está configurado e pronto para uso.

2 – Configurar o projeto do Visual Studio

  1. Criar o projeto do Visual Studio

    • Criar um novo projeto no Visual Studio usando o modelo "Projeto CMake"

    criar um novo projeto do CMake

    Captura de tela da interface do usuário do Visual Studio para mostrar como criar um novo projeto do CMake no Visual Studio

    • Nomeie seu projeto como "helloworld"
    • Marque a caixa "Colocar solução e projeto no mesmo diretório".
    • Clique no botão "Criar"

    nomeando seu projeto do CMake

    Captura de tela da interface do usuário do Visual Studio para nomear seu projeto CMake e clicar no botão "criar".

  2. Configurar as VCPKG_ROOT variáveis de ambiente.

    Observação

    Definir variáveis de ambiente dessa maneira afeta apenas a sessão de terminal atual. Para tornar essas alterações permanentes em todas as sessões, defina-as por meio do painel Variáveis de Ambiente do Sistema do Windows.

    Abra a janela interna do PowerShell do desenvolvedor no Visual Studio.

    Abrindo o PowerShell de desenvolvedor interno

    Captura de tela da interface do usuário do Visual Studio para a janela interna do desenvolvedor do PowerShell

    Execute os comandos a seguir:

    $env:VCPKG_ROOT="C:\path\to\vcpkg"
    $env:PATH="$env:VCPKG_ROOT;$env:PATH"
    

    Configurando suas variáveis de ambiente

    Captura de tela da interface do usuário do Visual Studio para a janela interna do desenvolvedor do PowerShell mostrando como configurar VCPKG_ROOT e adicioná-lo ao PATH.

    Abra o prompt de comando do desenvolvedor no Visual Studio.

    abrindo o prompt de comando do desenvolvedor do Visual Studio.

    Captura de tela da interface do usuário do Visual Studio para o prompt de comando do desenvolvedor.

    Execute os comandos a seguir:

    set "VCPKG_ROOT=C:\path\to\vcpkg"
    set PATH=%VCPKG_ROOT%;%PATH%
    

    Configurando suas variáveis de ambiente

    Captura de tela do prompt de comando do desenvolvedor do Visual Studio mostrando como configurar VCPKG_ROOT e adicioná-lo ao PATH.

    A configuração VCPKG_ROOT ajuda o Visual Studio a localizar sua instância vcpkg. Adicioná-lo garante PATH que você possa executar comandos vcpkg diretamente do shell.

  3. Gere um arquivo de manifesto e adicione dependências.

    Execute o seguinte comando para criar um arquivo de manifesto vcpkg (vcpkg.json):

    vcpkg new --application
    

    O vcpkg new comando adiciona um vcpkg.json arquivo e um vcpkg-configuration.json arquivo no diretório do projeto.

    Adicione o fmt pacote como uma dependência:

    vcpkg add port fmt
    

    Agora você vcpkg.json deve conter:

    {
        "dependencies": [
            "fmt"
        ]
    }
    

    Este é o seu arquivo de manifesto. O vcpkg lê o arquivo de manifesto para saber quais dependências instalar e se integra ao CMake para fornecer as dependências exigidas pelo seu projeto.

    O arquivo gerado vcpkg-configuration.json introduz uma linha de base que coloca restrições mínimas de versão nas dependências do projeto. Modificar esse arquivo está além do escopo deste tutorial. Embora não seja aplicável neste tutorial, é uma boa prática manter o arquivo sob controle do código-fonte para garantir a vcpkg-configuration.json consistência da versão em diferentes ambientes de desenvolvimento.

3 - Configure os arquivos do projeto

  1. Modifique o arquivo helloworld.cpp.

    Substitua o conteúdo de helloworld.cpp pelo seguinte código:

    #include <fmt/core.h>
    
    int main()
    {
        fmt::print("Hello World!\n");
        return 0;
    }
    

    Este arquivo de origem inclui o <fmt/core.h> cabeçalho que faz parte da fmt biblioteca. A main() função chama fmt::print() para gerar a mensagem "Hello World!" para o console.

  2. Configure o CMakePresets.json arquivo.

    O CMake pode vincular automaticamente as bibliotecas instaladas pelo vcpkg quando CMAKE_TOOLCHAIN_FILE estiver configurado para usar a cadeia de ferramentas personalizada do vcpkg. Isso pode ser feito usando arquivos de predefinições do CMake.

    Modifique CMakePresets.json para corresponder ao conteúdo abaixo:

    {
      "version": 2,
      "configurePresets": [
        {
          "name": "vcpkg",
          "generator": "Ninja",
          "binaryDir": "${sourceDir}/build",
          "cacheVariables": {
            "CMAKE_TOOLCHAIN_FILE": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake"
          }
        }
      ]
    }
    

    Crie CMakeUserPresets.json com o seguinte conteúdo:

    {
        "version": 2,
        "configurePresets": [
          {
            "name": "default",
            "inherits": "vcpkg",
            "environment": {
              "VCPKG_ROOT": "<path to vcpkg>"
            }
          }
        ]
      }
    

    O CMakePresets.json arquivo contém uma única predefinição chamada "vcpkg", que define a CMAKE_TOOLCHAIN_FILE variável. O CMakeUserPresets.json arquivo define a VCPKG_ROOT variável de ambiente para apontar para o caminho absoluto que contém a instalação local do vcpkg. É recomendável não fazer check-in CMakeUserPresets.json em sistemas de controle de versão.

  3. Edite o arquivo CMakeLists.txt.

    Substitua o conteúdo do arquivo CMakeLists.txt pelo seguinte código:

    cmake_minimum_required(VERSION 3.10)
    
    project(HelloWorld)
    
    find_package(fmt CONFIG REQUIRED)
    
    add_executable(HelloWorld helloworld.cpp)
    
    target_link_libraries(HelloWorld PRIVATE fmt::fmt)
    

    Agora, vamos detalhar o que cada linha do CMakeLists.txt arquivo faz:

    • cmake_minimum_required(VERSION 3.10): especifica que a versão mínima do CMake necessária para criar o projeto é 3.10. Se a versão do CMake instalada em seu sistema for inferior a isso, a compilação falhará.
    • project(HelloWorld): Define o nome do projeto como "HelloWorld".
    • find_package(fmt CONFIG REQUIRED): Procura a biblioteca usando seu fmt arquivo de configuração do CMake. A REQUIRED palavra-chave garante que um erro seja gerado se o pacote não for encontrado.
    • add_executable(HelloWorld helloworld.cpp): Adiciona um destino executável chamado "HelloWorld", criado a partir do arquivo helloworld.cppde origem.
    • target_link_libraries(HelloWorld PRIVATE fmt::fmt): Especifica que o HelloWorld executável deve ser vinculado à fmt biblioteca. A PRIVATE palavra-chave indica que fmt é necessário apenas para a construção HelloWorld e não deve ser propagado para outros projetos dependentes.

4 - Construa e execute o projeto

  1. Compile o projeto.

    Pressione Ctrl+Shift+B para criar o projeto no Visual Studio.

  2. Execute o aplicativo.

    Por fim, execute o executável:

    Executando o executável

    Captura de tela da interface do usuário do Visual Studio para executar o executável.

    Você deverá ver a saída:

    Saída do programa

    Captura de tela das saídas do programa - "Hello World!"

Próximas etapas

Para saber mais sobre o vcpkg.json, consulte nossa documentação de referência: