Compartir a través de


Tutorial: Instalación y uso de paquetes con CMake en Visual Studio Code

En este tutorial se muestra cómo crear un programa de "Hola mundo" de C++ que usa la fmt biblioteca con CMake, vcpkg y Visual Studio Code. Instalará dependencias, configurará, compilará y ejecutará una aplicación sencilla.

Prerrequisitos

1 - Configurar vcpkg

  1. Clonación del repositorio

    El primer paso es clonar el repositorio vcpkg desde GitHub. El repositorio contiene scripts para adquirir el ejecutable vcpkg y un registro de bibliotecas de código abierto mantenidas mantenidas por la comunidad de vcpkg. Para hacerlo, ejecute lo siguiente:

    git clone https://github.com/microsoft/vcpkg.git
    

    El registro mantenido de vcpkg es un conjunto de más de 2000 bibliotecas de código abierto. Las canalizaciones de integración continua de vcpkg han validado estas bibliotecas para trabajar conjuntamente. Aunque el repositorio vcpkg no contiene el código fuente de estas bibliotecas, contiene recetas y metadatos para compilarlos e instalarlos en el sistema.

  2. Ejecución del script de arranque

    Ahora que ha clonado el repositorio vcpkg, vaya al vcpkg directorio y ejecute el script de arranque:

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

    El script de arranque realiza comprobaciones de requisitos previos y descarga el ejecutable vcpkg.

    Eso es todo. vcpkg está configurado y listo para usarse.

2 - Creación de una carpeta de proyecto

Nota:

Si ejecuta este tutorial en Windows y usa MSVC como compilador, debe iniciar la instancia de Visual Studio Code desde un símbolo del sistema para desarrolladores para VS o PowerShell para desarrolladores para VS. Esto garantiza que la ruta de acceso del compilador y otras variables de entorno estén configuradas correctamente.

Cree una carpeta para almacenar los archivos del proyecto en una ubicación de su elección. En este tutorial, creamos una carpeta denominada "helloworld". A continuación, abra la carpeta mediante Visual Studio Code.

mkdir helloworld
code helloworld

3- Instalación de extensiones de Visual Studio Code

Vaya a la vista Extensión e instale la extensión de C++. Esto habilita IntelliSense de C++ y la navegación de código.

instalación de la extensión de Visual Studio Code en C++

Captura de pantalla de la vista extensión de Visual Studio Code con la extensión de C++

Instale la extensión herramientas de CMake. Esto habilita la compatibilidad con CMake en Visual Studio Code.

instalación de la extensión de Visual Studio Code para herramientas de CMake

Captura de pantalla de la vista extensión de Visual Studio Code con la extensión herramientas de CMake

4- Configuración de variables de entorno

  1. Configure la VCPKG_ROOT variable de entorno.

Abrir un nuevo terminal en Visual Studio Code: Terminal > New Terminal

Ejecute los comandos siguientes:

Nota:

Establecer variables de entorno de esta manera solo afecta a la sesión de terminal actual. Para realizar estos cambios permanentes en todas las sesiones, establézcalos en el panel Variables de entorno del sistema de Windows.

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

configuración de variables de entorno de vcpkg

Captura de pantalla de cómo configurar VCPKG_ROOT y agregarla a PATH en un terminal de Visual Studio Code.

Nota:

Establecer variables de entorno de esta manera solo afecta a la sesión de terminal actual. Para realizar estos cambios permanentes en todas las sesiones, establézcalos en el panel Variables de entorno del sistema de Windows.

Nota:

Establecer variables de entorno de esta manera solo afecta a la sesión de terminal actual. Para realizar estos cambios permanentes en todas las sesiones, establézcalos en el panel Variables de entorno del sistema de Windows.

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

Nota:

Establecer variables de entorno con el export comando solo afecta a la sesión de shell actual. Para que este cambio sea permanente entre sesiones, agregue el export comando al script de perfil del shell (por ejemplo, ~/.bashrc o ~/.zshrc).

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

La configuración VCPKG_ROOT ayuda a Visual Studio Code a localizar la instancia de vcpkg. Agregarlo a PATH garantiza que puede ejecutar comandos vcpkg directamente desde el shell.

  1. Genere un archivo de manifiesto y agregue dependencias.

Ejecute el siguiente comando para crear un archivo de manifiesto vcpkg (vcpkg.json) en la raíz de la helloworld carpeta:

vcpkg new --application

El vcpkg new comando agrega un vcpkg.json archivo y un vcpkg-configuration.json archivo en el directorio del proyecto.

Agregue el fmt paquete como dependencia:

vcpkg add port fmt

Ahora vcpkg.json debe contener:

{
  "dependencies": [
    "fmt"
  ]
}

Este es el archivo de manifiesto. vcpkg lee el archivo de manifiesto para obtener información sobre qué dependencias instalar e integrar con MSBuild para proporcionar las dependencias necesarias para el proyecto.

El archivo generado vcpkg-configuration.json presenta una línea base que coloca restricciones de versión mínimas en las dependencias del proyecto. La modificación de este archivo está fuera del ámbito de este tutorial. Aunque no es aplicable en este tutorial, se recomienda mantener el archivo bajo control de código fuente para garantizar la vcpkg-configuration.json coherencia de las versiones en distintos entornos de desarrollo.

5 - Configurar los archivos del proyecto

  1. Creación del CMakeLists.txt archivo

Cree un nuevo archivo denominado CMakeLists.txt en la raíz de la carpeta del proyecto con el siguiente contenido:

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 a desglosar lo que cada línea del CMakeLists.txt archivo:

  • cmake_minimum_required(VERSION 3.10): especifica que la versión mínima de CMake necesaria para compilar el proyecto es 3.10. Si la versión de CMake instalada en el sistema es inferior a esta, se generará un error.
  • project(HelloWorld): establece el nombre del proyecto en "HelloWorld".
  • find_package(fmt CONFIG REQUIRED): busca la fmt biblioteca mediante su archivo de configuración de CMake. La REQUIRED palabra clave garantiza que se genere un error si no se encuentra el paquete.
  • add_executable(HelloWorld helloworld.cpp): agrega un destino ejecutable denominado "HelloWorld", compilado a partir del archivo helloworld.cppde origen .
  • target_link_libraries(HelloWorld PRIVATE fmt::fmt): especifica que el HelloWorld ejecutable debe vincularse con la fmt biblioteca. La PRIVATE palabra clave indica que fmt solo es necesario para compilar HelloWorld y no debe propagarse a otros proyectos dependientes.
  1. Cree el helloworld.cpp archivo con el siguiente contenido:
#include <fmt/core.h>

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

En este helloworld.cpp archivo, el <fmt/core.h> encabezado se incluye para usar la fmt biblioteca. A main() continuación, la función llama fmt::print() a para generar el mensaje "Hola mundo!" en la consola.

Para permitir que el sistema de proyectos de CMake reconozca las bibliotecas de C++ proporcionadas por vcpkg, deberá proporcionar el vcpkg.cmake archivo de cadena de herramientas. Para automatizar esto, cree un CMakePresets.json archivo en el directorio "helloworld" con el siguiente contenido:

{
  "version": 2,
  "configurePresets": [
    {
      "name": "vcpkg",
      "generator": "Ninja",
      "binaryDir": "${sourceDir}/build",
      "cacheVariables": {
        "CMAKE_TOOLCHAIN_FILE": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake"
      }
    }
  ]
}
  1. Cree CMakeUserPresets.json el archivo en el directorio "helloworld" con el siguiente contenido:
{
    "version": 2,
    "configurePresets": [
      {
        "name": "default",
        "inherits": "vcpkg",
        "environment": {
          "VCPKG_ROOT": "<path to vcpkg>"
        }
      }
    ]
  }

Este CMakePresets.json archivo contiene un único valor preestablecido "vcpkg" para CMake y establece la CMAKE_TOOLCHAIN_FILE variable . CMAKE_TOOLCHAIN_FILE permite que el sistema de proyectos de CMake reconozca las bibliotecas de C++ proporcionadas por vcpkg. Solo CMakePresets.json está pensado para ser protegido en el control de código fuente mientras CMakeUserPresets.json se va a usar localmente.

6- Compilación y ejecución del proyecto

  1. Ejecute el CMake: Build comando del proyecto; para ello, vaya a la paleta de comandos en Ver > paleta de comandos.

Comando de compilación de CMake en Visual Studio Code

Captura de pantalla de la selección del comando de compilación de CMake en Visual Studio Code.

Seleccione el valor preestablecido de default CMake. Esto habilita la cadena de herramientas vcpkg.

Selección del valor preestablecido en el comando de compilación de CMake en Visual Studio Code

Captura de pantalla de la selección del valor preestablecido en el comando de compilación de CMake en Visual Studio Code.

  1. Iniciar el proyecto

Ejecute el programa:

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

Deberías ver la salida:

Hello World!

Pasos siguientes

Para más información sobre , consulte nuestra documentación de vcpkg.jsonreferencia: