Compartir a través de


Tutorial: Instalación de una dependencia desde la línea de comandos

Sugerencia

Consulte "Instalación de una dependencia desde un archivo de manifiesto" para obtener el método recomendado para instalar las dependencias.

Advertencia

Algunas características de vcpkg no están disponibles en modo clásico.

vcpkg tiene dos modos de operación: modo clásico y modo de manifiesto. En este artículo se describe cómo instalar paquetes mediante el modo clásico. Para la mayoría de los usuarios, se recomienda usar el modo de manifiesto en su lugar.

En el modo clásico, se usa vcpkg como una interfaz de línea de comandos para instalar las dependencias en un directorio de instalación común. Normalmente, ubicado en %VCPKG_ROOT%/installed, donde %VCPKG_ROOT% es el directorio de instalación de vcpkg.

En este tutorial, aprenderá a:

Requisitos previos

  • vcpkg
  • Un terminal
  • Editor de código
  • Un compilador de C++
  • (Opcional) CMake o MSBuild

1 - Creación de un proyecto

En una nueva carpeta, cree un archivo de origen denominado main.cxx con este contenido:

#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));
  }
}

El código hace referencia a las bibliotecas de código abierto: cxxopts, fmty range-v3; que están disponibles en el registro público vcpkg en https://github.com/Microsoft/vcpkg.

2 - Integración de vcpkg con el sistema de compilación

En este paso se muestra cómo integrar vcpkg con CMake o MSBuild, de modo que las dependencias del proyecto se instalen o restauren automáticamente cada vez que compile el proyecto.

Si usa un sistema de compilación diferente, vaya al paso siguiente: Instalar dependencias.

Para usar vcpkg en los proyectos de MSBuild, ejecute el siguiente comando:

vcpkg integrate install

Solo tiene que ejecutar el vcpkg integrate install comando la primera vez que quiera habilitar la integración de MSBuild. Esto permite la integración de MSBuild para todos los proyectos existentes y futuros. Use vcpkg integrate remove para quitar la integración en todo el sistema de MSBuild.

Este método de integración agrega automáticamente paquetes instalados por vcpkg a las siguientes propiedades del proyecto: Include Directories, Link Directoriesy Link Libraries. Además, esto crea una acción posterior a la compilación que garantiza que los archivos DLL necesarios se copien en la carpeta de salida de compilación. Esto funciona para todas las soluciones y proyectos con Visual Studio 2015 o versiones posteriores.

3- Instalación de dependencias

El código hace referencia a las bibliotecas de código abierto: cxxopts, fmty range-v3; todas están disponibles en el registro público vcpkg en https://github.com/Microsoft/vcpkg.

Para instalar estos paquetes, use el 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 - Compilación del proyecto

Importante

Asegúrese de que el triplete de los paquetes instalados coincide con la configuración del proyecto. Use x64-windows o x64-windows-static para los proyectos de 64 bits o x86-windowsx86-windows-static para los proyectos de 32 bits.

Con la integración en todo el sistema habilitada, solo tiene que ejecutar msbuild para compilar el proyecto:

PS D:\projects\manifest-example> msbuild
MSBuild version 17.7.0-preview-23319-02+6829506b8 for .NET Framework
Build started 8/13/2023 3:07:36 PM.

Project "D:\projects\manifest-example\manifest-example.sln" on node 1 (default targets).
ValidateSolutionConfiguration:
  (omitted)
PrepareForBuild:
  (omitted)
InitializeBuildStatus:
  (omitted)
ComputeStdModulesCompileInputs:
  (omitted)
SetModuleDependencies:
VcpkgTripletSelection:
  Using triplet "x64-windows" from "D:\vcpkg\installed\x64-windows\"
  Using normalized configuration "Debug"
ClCompile:
  (omitted)
Link:
  (omitted)
AppLocalFromInstalled:
  pwsh.exe -ExecutionPolicy Bypass -noprofile -File "D:\vcpkg\scripts\buildsystems\msbuild\applocal.ps1" "D:\projects\manifest-example\x64\Debug\manifest-example.exe"
   "D:\vcpkg\installed\x64-windows\debug\bin" "x64\Debug\manifest-example.tlog\manifest-example.write.1u.tlog" "x64\Debug\vcpkg.applocal.log"
  D:\projects\manifest-example\x64\Debug\fmtd.dll
FinalizeBuildStatus:
  Deleting file "x64\Debug\manifest-example.tlog\unsuccessfulbuild".
  Touching "x64\Debug\manifest-example.tlog\manifest-example.lastbuildstate".
Done Building Project "D:\projects\manifest-example\manifest-example.vcxproj" (default targets).

Done Building Project "D:\projects\manifest-example\manifest-example.sln" (default targets).

Build succeeded.

Pasos siguientes

En este tutorial, instaló dependencias para un proyecto sencillo mediante vcpkg como una interfaz de línea de comandos.

Estas son algunas tareas adicionales para probar a continuación: