Alguns recursos vcpkg não estão disponíveis no modo clássico.
VCPKG tem dois modos de operação: modo clássico e modo manifesto. Este artigo descreve como instalar pacotes usando o modo clássico. Para a maioria dos usuários, recomendamos o uso do modo manifesto.
No modo clássico, você usa vcpkg como uma interface de linha de comando para instalar suas dependências em um diretório de instalação comum. Normalmente, localizado em %VCPKG_ROOT%/installed, onde %VCPKG_ROOT% está o diretório de instalação do vcpkg.
Em uma nova pasta, crie um arquivo de origem nomeado main.cxx com estes conteúdos:
#include <cxxopts.hpp>
#include <fmt/format.h>
#include <range/v3/view.hpp>
namespace view = ranges::views;
int fib(int x)
{
int a = 0, b = 1;
for (int it : view::repeat(0) | view::take(x))
{
(void)it;
int tmp = a;
a += b;
b = tmp;
}
return a;
}
int main(int argc, char **argv)
{
cxxopts::Options options("fibo", "Print the fibonacci sequence up to a value 'n'");
options.add_options()("n,value", "The value to print to", cxxopts::value<int>()->default_value("10"));
auto result = options.parse(argc, argv);
auto n = result["value"].as<int>();
for (int x : view::iota(1) | view::take(n))
{
fmt::print("fib({}) = {}\n", x, fib(x));
}
}
O código faz referência às bibliotecas de código aberto: cxxopts, fmte range-v3; que estão todas disponíveis no registro público vcpkg em https://github.com/Microsoft/vcpkg.
2 - Integre vcpkg com seu sistema de compilação
Nesta etapa, mostramos como integrar vcpkg com CMake ou MSBuild, para que suas dependências de projeto sejam automaticamente instaladas ou restauradas sempre que você compilar o projeto.
Se você estiver usando um sistema de compilação diferente, vá para a próxima etapa: Instalar dependências.
Você só precisa executar o vcpkg integrate install comando na primeira vez que desejar habilitar a integração do MSBuild. Isso permite a integração do MSBuild para todos os seus projetos existentes e futuros. Use vcpkg integrate remove para remover a integração de todo o sistema do MSBuild.
Esse método de integração adiciona automaticamente pacotes instalados no vcpkg às seguintes propriedades do projeto: Include Directories, Link Directoriese Link Libraries. Além disso, isso cria uma ação pós-compilação que garante que todas as DLLs necessárias sejam copiadas para a pasta de saída da compilação. Isso funciona para todas as soluções e projetos que usam o Visual Studio 2015 ou mais recente.
Para usar vcpkg em seus projetos CMake, você precisa definir a variável para usar o CMAKE_TOOLCHAIN_FILE arquivo CMake toolchain do vcpkg. O toolchain vcpkg está em %VCPKG_ROOT%/scripts/buildsystems/vcpkg.cmake, onde %VCPKG_ROOT% é o caminho de instalação do vcpkg.
Para definir o arquivo toolchain, use qualquer um destes métodos:
Defina o CMAKE_TOOLCHAIN_FILE no arquivo CMakePresets.json.
Passe -DCMAKE_TOOLCHAIN_FILE=<path/to/vcpkg>/scripts/buildsystems/vcpkg.cmake como um parâmetro em sua chamada de configuração do CMake.
Defina a CMAKE_TOOLCHAIN_FILE variável CMake antes da primeira chamada para project() em seu CMakeLists.txt arquivo.
3 - Instalar dependências
O código faz referência às bibliotecas de código aberto: cxxopts, fmte range-v3; todos eles estão disponíveis no registro público vcpkg em https://github.com/Microsoft/vcpkg.
Para instalar esses pacotes, use o vcpkg install comando.
vcpkg install cxxopts fmt range-v3
$ ./vcpkg install cxxopts fmt range-v3
Computing installation plan...
The following packages will be built and installed:
cxxopts:x64-windows -> 3.1.1
fmt:x64-windows -> 10.0.0
range-v3:x64-windows -> 0.12.0#1
* vcpkg-cmake:x64-windows -> 2023-05-04
* vcpkg-cmake-config:x64-windows -> 2022-02-06#1
Additional packages (*) will be modified to complete this operation.
(omitted)
cxxopts provides CMake targets:
# this is heuristically generated, and may not be correct
find_package(cxxopts CONFIG REQUIRED)
target_link_libraries(main PRIVATE cxxopts::cxxopts)
The package fmt provides CMake targets:
find_package(fmt CONFIG REQUIRED)
target_link_libraries(main PRIVATE fmt::fmt)
# Or use the header-only version
find_package(fmt CONFIG REQUIRED)
target_link_libraries(main PRIVATE fmt::fmt-header-only)
range-v3 provides CMake targets:
# this is heuristically generated, and may not be correct
find_package(range-v3 CONFIG REQUIRED)
target_link_libraries(main PRIVATE range-v3::meta range-v3::concepts range-v3::range-v3)
4 - Construa o projeto
Importante
Certifique-se de que o triplet dos pacotes instalados corresponda à configuração do seu projeto. Use x64-windows ou para seus projetos de 64 bits e x86-windows ou x86-windows-staticx64-windows-static para seus projetos de 32 bits.
Execute o seguinte comando: cmake -B build -S . -DCMAKE_TOOLCHAIN_FILE=%VCPKG_ROOT%\scripts\buildsystems\vcpkg.cmake, mas substitua %VCPKG_ROOT% pelo caminho de instalação vcpkg.
PS D:\projects\manifest-example> cmake -B build -S . -DCMAKE_TOOLCHAIN_FILE=D:/vcpkg/scripts/buildsystems/vcpkg.cmake
-- Building for: Visual Studio 17 2022
-- Selecting Windows SDK version 10.0.19041.0 to target Windows 10.0.25921.
-- The CXX compiler identification is MSVC 19.37.32814.0
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: C:/Program Files/Microsoft Visual Studio/2022/Preview/VC/Tools/MSVC/14.37.32814/bin/Hostx64/x64/cl.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done
-- Generating done
-- Build files have been written to: D:/projects/manifest-example/build
3 - Construa o projeto CMake
Execute o seguinte comando para compilar o projeto: cmake --build build:
PS D:\projects\manifest-example> cmake --build build
MSBuild version 17.7.0-preview-23319-02+6829506b8 for .NET Framework
Checking Build System
Building Custom Rule D:/projects/manifest-example/CMakeLists.txt
main.cxx
fibo.vcxproj -> D:\projects\manifest-example\build\Debug\fibo.exe
Building Custom Rule D:/projects/manifest-example/CMakeLists.txt
Próximas etapas
Neste tutorial, você instalou dependências para um projeto simples usando vcpkg como uma interface de linha de comando.
Aqui estão algumas tarefas adicionais para tentar em seguida:
A fonte deste conteúdo pode ser encontrada no GitHub, onde você também pode criar e revisar problemas e solicitações de pull. Para obter mais informações, confira o nosso guia para colaboradores.
Comentários do vcpkg
O vcpkg é um projeto código aberto. Selecione um link para fornecer comentários:
Crie um projeto do .NET e aprenda a adicionar pacotes e a gerenciar as dependências de pacote no projeto. Use a CLI do .NET Core e o registro do NuGet para adicionar bibliotecas e ferramentas aos aplicativos C# usando o Visual Studio Code.