Partilhar via


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

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

Pré-requisitos

1 - Configurar vcpkg

  1. Clonar o repositório

    O primeiro passo é 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 com curadoria 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 funcionar em conjunto. 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 bootstrap:

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

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

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

2 - Criar uma pasta de projeto

Observação

Se você estiver executando este tutorial no Windows e usando o MSVC como seu compilador, precisará iniciar a instância do Visual Studio Code a partir de um prompt de comando do desenvolvedor para VS ou do Developer PowerShell para VS. Isso garante que o caminho do compilador e outras variáveis de ambiente estejam configurados corretamente.

Crie uma pasta para armazenar os arquivos do projeto em um local de sua escolha. Para este tutorial, criamos uma pasta chamada "helloworld". Em seguida, abra a pasta usando o Visual Studio Code.

mkdir helloworld
code helloworld

3 - Instalar extensões de código do Visual Studio

Navegue até a visualização Extensão e instale a Extensão C++. Isso permite o C++ IntelliSense e a navegação de código.

instalando a Extensão Visual Studio Code para C++

Captura de tela da vista de extensão do Visual Studio Code com extensão para C++

Instale a extensão CMake Tools. Isso habilita o suporte ao CMake no Visual Studio Code.

instalando a extensão CMake Tools para o Visual Studio Code

Captura de ecrã da vista de extensões do Visual Studio Code com a extensão CMake Tools

4 - Configurar variáveis de ambiente

  1. Configure a VCPKG_ROOT variável de ambiente.

Abra um novo Terminal no Visual Studio Code: Terminal > Novo Terminal

Execute os seguintes comandos:

Observação

A configuração de 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 Windows.

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

Configurando variáveis de ambiente VCPKG

Captura de ecrã da configuração de VCPKG_ROOT e a sua adição ao PATH num terminal do Visual Studio Code.

Observação

A configuração de 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 Windows.

Observação

A configuração de 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 Windows.

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

Observação

A configuração de variáveis de ambiente usando o export comando afeta apenas a sessão de shell atual. Para tornar essa alteração permanente entre sessões, adicione o export comando ao script de perfil do shell (por exemplo, ~/.bashrc ou ~/.zshrc).

export VCPKG_ROOT=/c/path/to/vcpkg
export PATH=$PATH:$VCPKG_ROOT

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

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

Execute o seguinte comando para criar um arquivo de manifesto vcpkg (vcpkg.json) na raiz da helloworld pasta:

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

O seu vcpkg.json deve agora conter:

{
  "dependencies": [
    "fmt"
  ]
}

Este é o seu ficheiro de manifesto. vcpkg lê o arquivo de manifesto para saber quais dependências instalar e integra com o 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 consistência da vcpkg-configuration.json versão em diferentes ambientes de desenvolvimento.

5 - Configurar os arquivos do projeto

  1. Criar o CMakeLists.txt ficheiro

Crie um novo arquivo nomeado CMakeLists.txt na raiz da pasta do projeto com o seguinte conteúdo:

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)

Vamos detalhar o que há em cada linha do arquivo CMakeLists.txt.

  • 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 no seu sistema for inferior a esta, será gerado um erro.
  • project(HelloWorld): Define o nome do projeto como "HelloWorld".
  • find_package(fmt CONFIG REQUIRED): Procura a fmt biblioteca usando o seu ficheiro 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 se propagar para outros projetos dependentes.
  1. Crie o helloworld.cpp arquivo com o seguinte conteúdo:
#include <fmt/core.h>

int main()
{
    fmt::print("Hello World!\n");
    return 0;
}

Neste helloworld.cpp ficheiro, o <fmt/core.h> cabeçalho é incluído para usar a fmt biblioteca. Em seguida, a função main() chama fmt::print() para enviar a mensagem "Hello World!" para o console.

Para permitir que o sistema de projeto CMake reconheça bibliotecas C++ fornecidas pelo vcpkg, você precisará fornecer o vcpkg.cmake arquivo toolchain. Para automatizar isso, crie um CMakePresets.json arquivo no diretório "helloworld" com o seguinte conteúdo:

{
  "version": 2,
  "configurePresets": [
    {
      "name": "vcpkg",
      "generator": "Ninja",
      "binaryDir": "${sourceDir}/build",
      "cacheVariables": {
        "CMAKE_TOOLCHAIN_FILE": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake"
      }
    }
  ]
}
  1. Crie CMakeUserPresets.json um arquivo no diretório "helloworld" com o seguinte conteúdo:
{
  "version": 2,
  "configurePresets": [
    {
      "name": "default",
      "inherits": "vcpkg",
      "environment": {
        "VCPKG_ROOT": "<path to vcpkg>"
      }
    }
  ]
}

Este CMakePresets.json arquivo contém uma única predefinição "vcpkg" para CMake e define a CMAKE_TOOLCHAIN_FILE variável. O CMAKE_TOOLCHAIN_FILE permite que o sistema de projeto CMake reconheça bibliotecas C++ fornecidas pelo vcpkg. Apenas CMakePresets.json deve ser verificado no controle do código-fonte enquanto CMakeUserPresets.json deve ser usado localmente.

6 - Construir e executar o projeto

  1. Execute o comando CMake: Build do projeto navegando na Paleta de Comandos em Exibir Paleta de Comandos >

Comando de compilação CMake no Visual Studio Code

Captura de tela da seleção do comando de compilação CMake no Visual Studio Code.

Selecione a default predefinição CMake. Isso habilita a cadeia de ferramentas vcpkg.

Selecionando predefinição no comando de compilação do CMake no Visual Studio Code

Captura de tela da seleção da predefinição no comando CMake build no Visual Studio Code.

  1. Lançar o projeto

Execute o programa:

./build/HelloWorld.exe
./build/HelloWorld

Você deve ver a saída:

Hello World!

Próximos passos

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