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
- Visual Studio com carga de trabalho de desenvolvimento C++ e componente CMake
- Git
1 – Configurar vcpkg
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 trabalhar 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.
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 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
Criar o projeto do Visual Studio
- Criar um novo projeto no Visual Studio usando o modelo "CMake Project"
Captura de tela da interface do usuário do Visual Studio para mostrar como criar um novo projeto CMake no Visual Studio
- Nomeie seu projeto como "helloworld"
- Marque a caixa para "Colocar solução e projeto no mesmo diretório".
- Clique no botão "Criar"
Captura de tela da interface do usuário do Visual Studio para nomear seu projeto CMake e clicar no botão "criar".
Configurar as
VCPKG_ROOT
variáveis de ambiente.Abra a janela interna do Developer PowerShell no Visual Studio.
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"
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á-la ao PATH.
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 do Windows.
Abra o prompt de comando do desenvolvedor no 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%
Captura de tela do prompt de comando do desenvolvedor do Visual Studio mostrando como configurar VCPKG_ROOT e adicioná-lo ao PATH.
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 do Windows.
A configuração
VCPKG_ROOT
ajuda o Visual Studio a localizar sua instância vcpkg. Adicioná-lo garantePATH
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
):vcpkg new --application
O
vcpkg new
comando adiciona umvcpkg.json
arquivo e umvcpkg-configuration.json
arquivo no diretório do projeto.Adicione o
fmt
pacote como uma dependência:vcpkg add port fmt
Seu
vcpkg.json
agora deve conter:{ "dependencies": [ "fmt" ] }
Este é o seu arquivo 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 avcpkg-configuration.json
consistência da versão em diferentes ambientes de desenvolvimento.
3 - Configurar os arquivos do projeto
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; }
Esse arquivo de origem inclui o
<fmt/core.h>
cabeçalho que faz parte dafmt
biblioteca. Amain()
função chamafmt::print()
para enviar a mensagem "Hello World!" para o console.Configure o
CMakePresets.json
arquivo.- Renomeie o arquivo
CMakePresets.json
paraCMakeUserPresets.json
- Atualize seu conteúdo conforme mostrado abaixo. Substitua
<VCPKG_ROOT>
pelo caminho para o diretório vcpkg.
{ "version": 2, "configurePresets": [ { "name": "default", "generator": "Ninja", "binaryDir": "${sourceDir}/build", "cacheVariables": { "CMAKE_TOOLCHAIN_FILE": "<VCPKG_ROOT>/scripts/buildsystems/vcpkg.cmake" } } ] }
- Como esse arquivo inclui um caminho absoluto codificado, é recomendável que você não mantenha esse arquivo sob controle do código-fonte. Se você estiver usando o Git, adicione
CMakeUserPresets.json
ao seu.gitignore
arquivo.
O
CMakeUserPresets.json
arquivo contém uma única predefinição chamada "default", esta predefinição define o para usar oCMAKE_TOOLCHAIN_FILE
arquivo CMake toolchain do vcpkg. Isso permite que vcpkg forneça pacotes para o CMake quando você configurar e compilar o projeto. Leia a documentação de integração do cmake vcpkg para saber mais.- Renomeie o arquivo
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 main.cpp) target_link_libraries(HelloWorld PRIVATE fmt::fmt)
Agora, vamos detalhar o que cada linha no
CMakeLists.txt
arquivo faz:cmake_minimum_required(VERSION 3.10)
: Especifica que a versão mínima do CMake necessária para compilar o projeto é 3.10. Se a versão do CMake instalada no seu sistema for inferior a esta, a compilação falhará.project(HelloWorld)
: Define o nome do projeto como "HelloWorld".find_package(fmt CONFIG REQUIRED)
: Procura afmt
biblioteca usando seu arquivo de configuração 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ária apenas para a construçãoHelloWorld
e não deve se propagar para outros projetos dependentes.
4 - Construir e executar o projeto
Compile o projeto.
Pressione
Ctrl+Shift+B
para criar o projeto no Visual Studio.Execute o aplicativo.
Finalmente, execute 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:
Screenshot das saídas do programa - "Hello World!"
Próximas etapas
Para saber mais sobre vcpkg.json
o , consulte nossa documentação de referência: