Tutorial: Instalar e usar pacotes com o 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
- Visual Studio Code
- Compilador C++
- Windows 7 ou mais recente
1 - Configurar o vcpkg
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.
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 - Crie uma pasta de projeto
Observação
Se você estiver executando este tutorial no Windows e usando o MSVC como compilador, precisará iniciar a instância do Visual Studio Code em um Prompt de Comando do Desenvolvedor para VS ou PowerShell do Desenvolvedor para VS. Isso garante que o caminho do compilador e outras variáveis de ambiente sejam configurados corretamente.
Crie uma pasta para manter 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 – Instale extensões de código do Visual Studio
Navegue até o modo de exibição Extensão e instale a Extensão C++. Isso habilita o C++ IntelliSense e a navegação de código.
Captura de tela do modo de exibição da Extensão do Visual Studio Code com a Extensão C++
Instale a extensão de ferramentas do CMake. Isso habilita o suporte ao CMake no Visual Studio Code.
Captura de tela do modo de exibição da Extensão do Visual Studio Code com a Extensão de Ferramentas do CMake
4 - Configurar variáveis de ambiente
- Configure a
VCPKG_ROOT
variável de ambiente.
Abra um novo Terminal no Visual Studio Code: Terminal > Novo Terminal
Execute os comandos a seguir:
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.
$env:VCPKG_ROOT="C:\path\to\vcpkg"
$env:PATH="$env:VCPKG_ROOT;$env:PATH"
Captura de tela da configuração do VCPKG_ROOT e adicioná-lo ao PATH em um terminal do Visual Studio Code.
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.
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.
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 atual do shell. Para tornar essa alteração permanente entre as 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 garante PATH
que você possa executar comandos vcpkg diretamente do shell.
- 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
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 MSBuild 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.
5 - Configure os arquivos do projeto
- Criar o
CMakeLists.txt
arquivo
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 cada linha no CMakeLists.txt
arquivo:
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, um erro será gerado.project(HelloWorld)
: Define o nome do projeto como "HelloWorld".find_package(fmt CONFIG REQUIRED)
: Procura a biblioteca usando seufmt
arquivo de configuração do CMake. AREQUIRED
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 arquivohelloworld.cpp
de origem.target_link_libraries(HelloWorld PRIVATE fmt::fmt)
: Especifica que oHelloWorld
executável deve ser vinculado àfmt
biblioteca. APRIVATE
palavra-chave indica quefmt
é necessário apenas para a construçãoHelloWorld
e não deve ser propagado para outros projetos dependentes.
- Crie o
helloworld.cpp
arquivo com o seguinte conteúdo:
#include <fmt/core.h>
int main()
{
fmt::print("Hello World!\n");
return 0;
}
helloworld.cpp
Neste arquivo, o <fmt/core.h>
cabeçalho é incluído para usar a fmt
biblioteca. Em seguida, a main()
função chama fmt::print()
para gerar 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 arquivo da vcpkg.cmake
cadeia de ferramentas. 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"
}
}
]
}
- 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>"
}
}
]
}
Esse CMakePresets.json
arquivo contém uma única predefinição "vcpkg" para o 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. Only CMakePresets.json
deve ser verificado no controle do código-fonte enquanto CMakeUserPresets.json
deve ser usado localmente.
6 - Construa e execute o projeto
- Execute o
CMake: Build
comando do projeto navegando até a Paleta de comandos na Paleta de comandos da vista >
Captura de tela da seleção do comando de compilação do CMake no Visual Studio Code.
Selecione a predefinição CMake default
. Isso habilita o conjunto de ferramentas vcpkg.
Captura de tela da seleção da predefinição no comando de build do CMake no Visual Studio Code.
- Inicie o projeto
Execute o programa:
./build/HelloWorld.exe
./build/HelloWorld
Você deverá ver a saída:
Hello World!
Próximas etapas
Para saber mais sobre o vcpkg.json
, consulte nossa documentação de referência: