Personalización de la configuración de compilación de CMakeCustomize CMake build settings

En Visual Studio 2019 y versiones posteriores, puede agregar configuraciones y personalizar sus opciones mediante el Editor de configuración de CMake.In Visual Studio 2019 and later, you can add configurations and customize their settings by using the CMake settings editor. El editor está pensado para ser una alternativa más sencilla a la edición manual del archivo CMakeSettings.json , pero si prefiere editar directamente el archivo, haga clic en el vínculo Editar JSON en la esquina superior derecha del editor.The editor is intended to be a simpler alternative to manually editing the CMakeSettings.json file, but if you prefer to edit the file directly, you can click the Edit JSON link in the upper right of the editor.

Para abrir el editor, haga clic en el menú desplegable Configuración de la barra de herramientas y seleccione Administrar configuraciones.To open the editor, click on the Configuration drop-down in the main toolbar and choose Manage Configurations.

Lista desplegable de configuraciones de CMake

Ahora puede ver el Editor de configuración con las configuraciones instaladas en la parte izquierda.Now you see the Settings Editor with the installed configurations on the left.

Editor de configuración de CMake

De forma predeterminada, Visual Studio proporciona una configuración x64-Debug.Visual Studio provides one x64-Debug configuration by default. Puede agregar configuraciones adicionales haciendo clic en el signo más de color verde.You can add additional configurations by clicking the green plus sign. Los valores que se ven en el editor pueden variar en función de la configuración seleccionada.The settings that you see in the editor might vary depending on which configuration is selected.

Las opciones que elige en el editor se escriben en un archivo denominado CMakeSettings.json.The options that you choose in the editor are written to a file called CMakeSettings.json. Este archivo proporciona argumentos de la línea de comandos y variables de entorno que se pasan a CMake al compilar los proyectos.This file provides command-line arguments and environment variables that are passed to CMake when you build the projects. Visual Studio nunca modifica CMakeLists.txt de forma automática; mediante CMakeSettings.json , puede personalizar la compilación a través de Visual Studio mientras deja intactos los archivos de proyecto de CMake para que otros miembros del equipo puedan consumirlos con las herramientas que usan.Visual Studio never modifies CMakeLists.txt automatically; by using CMakeSettings.json you can customize the build through Visual Studio while leaving the CMake project files untouched so that others on your team can consume them with whatever tools they're using.

Configuración general de CMakeCMake General Settings

Las opciones siguientes están disponibles en el encabezado General :The following settings are available under the General heading:

Nombre de la configuraciónConfiguration name

Se corresponde al valor name.Corresponds to the name setting. Este nombre aparece en la lista desplegable de configuración de C++.This name appears in the C++ configuration dropdown. Puede usar la macro ${name} para crear otros valores de propiedad, como rutas de acceso.You can use the ${name} macro to compose other property values such as paths.

Tipo de configuraciónConfiguration type

Se corresponde al valor configurationType.Corresponds to the configurationType setting. Define el tipo de configuración de compilación para el generador seleccionado.Defines the build configuration type for the selected generator. Los valores admitidos actualmente son "Debug", "MinSizeRel", "Release" y "RelWithDebInfo".Currently supported values are "Debug", "MinSizeRel", "Release", and "RelWithDebInfo". Se asigna a CMAKE_BUILD_TYPE.It maps to CMAKE_BUILD_TYPE.

Conjunto de herramientasToolset

Se corresponde al valor inheritedEnvironments.Corresponds to the inheritedEnvironments setting. Define el entorno del compilador que se usa para compilar la configuración seleccionada.Defines the compiler environment that's used to build the selected configuration. Los valores admitidos dependen del tipo de configuración.Supported values depend on the type of configuration. Para crear un entorno personalizado, haga clic en el vínculo Editar JSON en la esquina superior derecha del editor de configuración y edite directamente el archivo CMakeSettings.json.To create a custom environment, choose the Edit JSON link in the upper right corner of the Settings editor, and edit the CMakeSettings.json file directly.

Archivo de cadena de herramientas de CMakeCMake toolchain file

Ruta de acceso al archivo de cadena de herramientas de CMake.Path to the CMake toolchain file. Esta ruta de acceso se pasa a CMake como "-DCMAKE_TOOLCHAIN_FILE = <filepath>".This path is passed to CMake as "-DCMAKE_TOOLCHAIN_FILE = <filepath>". Los archivos de cadena de herramientas especifican las ubicaciones de los compiladores y las utilidades de cadena de herramientas, así como otra información relacionada con el compilador y la plataforma de destino.Toolchain files specify locations of compilers and toolchain utilities, and other target platform and compiler related information. De forma predeterminada, Visual Studio usa el archivo de cadena de herramientas de vcpkg si no se especifica esta configuración.By default, Visual Studio uses the vcpkg toolchain file if this setting is unspecified.

Raíz de la compilaciónBuild root

Se corresponde a buildRoot.Corresponds to buildRoot. Se asigna a CMAKE_BINARY_DIR y se especifica dónde se creará la caché de CMake.Maps to CMAKE_BINARY_DIR, and specifies where to create the CMake cache. Si la carpeta especificada no existe, se creará.The specified folder is created if it doesn't exist.

Los argumentos de comandosCommand arguments

Las opciones siguientes están disponibles en el encabezado Argumentos de comandos :The following settings are available under the Command arguments heading:

Argumentos de comandos de CMakeCMake command arguments

Se corresponde a cmakeCommandArgs.Corresponds to cmakeCommandArgs. Especifica las opciones de línea de comandos adicionales que se pasan a CMake.exe.Specifies any additional command line options passed to CMake.exe.

Argumentos de comandos de compilaciónBuild command arguments

Se corresponde a buildCommandArgs.Corresponds to buildCommandArgs. Especifica los modificadores adicionales que se pasarán al sistema de compilación subyacente.Specifies additional switches to pass to the underlying build system. Por ejemplo, pasar -v cuando se usa el generador Ninja obliga a Ninja a generar líneas de comandos.For example, passing -v when using the Ninja generator forces Ninja to output command lines.

Argumentos de comandos de CTestCTest command arguments

Se corresponde a ctestCommandArgs.Corresponds to ctestCommandArgs. Especifica opciones de línea de comandos adicionales que se pasarán a CTest al ejecutar las pruebas.Specifies additional command line options to pass to CTest when running tests.

Configuración general para compilaciones remotasGeneral settings for remote builds

Para las configuraciones como Linux en las que se usan compilaciones remotas, también están disponibles las opciones siguientes:For configurations such as Linux that use remote builds, the following settings are also available:

Argumentos de comandos de rsyncrsync command arguments

Opciones adicionales de la línea de comandos pasadas a rsync, una herramienta de copia de archivos rápida y versátil.Additional command line options passed to rsync, a fast and versatile file-copying tool.

Caché y variables de CMakeCMake variables and cache

Estas opciones permiten establecer variables de CMake y guardarlas en CMakeSettings.json.These settings enable you to set CMake variables and save them in CMakeSettings.json. Se pasan a CMake en tiempo de compilación y reemplazan los valores que contiene el archivo CMakeLists.txt.They're passed to CMake at build time, and override whatever values are in the CMakeLists.txt file. Puede usar esta sección de la misma manera que usaría CMakeGUI para ver una lista de todas las variables de CMake disponibles para editar.You can use this section in the same way that you might use the CMakeGUI to view a list of all the CMake variables available to edit. Haga clic en el botón Guardar y generar caché para ver una lista de todas las variables de CMake disponibles para editar, incluidas las variables avanzadas (según CMakeGUI).Click the Save and generate cache button to view a list of all CMake variables available to edit, including advanced variables (per the CMakeGUI). Puede filtrar la lista por nombre de variable.You can filter the list by variable name.

Se corresponde a variables.Corresponds to variables. Contiene un par nombre-valor de variables de CMake que se pasan como -D nombre=valor a CMake.Contains a name-value pair of CMake variables passed as -D name=value to CMake. Si las instrucciones de compilación del proyecto de CMake especifican la adición de las variables directamente al archivo de caché de CMake, en su lugar se recomienda agregarlas aquí.If your CMake project build instructions specify the addition of any variables directly to the CMake cache file, we recommend you add them here instead.

Configuración avanzadaAdvanced settings

Generador de CMakeCMake generator

Se corresponde a generator.Corresponds to generator. Se asigna al modificador -G de CMake y especifica el generador de CMake que se va a usar.Maps to the CMake -G switch, and specifies the CMake generator to use. Esta propiedad también se puede usar como una macro, ${generator}, al crear otros valores de propiedad.This property can also be used as a macro, ${generator}, when composing other property values. En la actualidad, Visual Studio admite los generadores de CMake siguientes:Visual Studio currently supports the following CMake generators:

  • "Ninja""Ninja"
  • "Archivos Make Unix""Unix Makefiles"
  • "Visual Studio 16 2019""Visual Studio 16 2019"
  • "Visual Studio 16 2019 Win64""Visual Studio 16 2019 Win64"
  • "Visual Studio 16 2019 ARM""Visual Studio 16 2019 ARM"
  • "Visual Studio 15 2017""Visual Studio 15 2017"
  • "Visual Studio 15 2017 Win64""Visual Studio 15 2017 Win64"
  • "Visual Studio 15 2017 ARM""Visual Studio 15 2017 ARM"
  • "Visual Studio 14 2015""Visual Studio 14 2015"
  • "Visual Studio 14 2015 Win64""Visual Studio 14 2015 Win64"
  • "Visual Studio 14 2015 ARM""Visual Studio 14 2015 ARM"

Como Ninja está diseñado para velocidades de compilación rápidas en lugar de flexibilidad y funcionamiento, se establece como el valor predeterminado.Because Ninja is designed for fast build speeds instead of flexibility and function, it's set as the default. Pero es posible que algunos proyectos de CMake no se puedan generar correctamente mediante Ninja.However, some CMake projects may be unable to correctly build using Ninja. Si eso ocurre, puede indicar a CMake que en su lugar genere un proyecto de Visual Studio.If that occurs, you can instruct CMake to generate a Visual Studio project instead.

Modo IntelliSenseIntelliSense mode

El modo IntelliSense que usa el motor de IntelliSense.The IntelliSense mode used by the IntelliSense engine. Si no se selecciona ningún modo, Visual Studio lo heredará del conjunto de herramientas especificado.If no mode is selected then Visual Studio will inherit from the specified toolset.

Directorio de instalaciónInstall directory

El directorio en el que CMake instala los destinos.The directory in which CMake installs targets. Se asigna a CMAKE_INSTALL_PREFIX.Maps to CMAKE_INSTALL_PREFIX.

Ejecutable de CMakeCMake executable

La ruta de acceso completa al ejecutable del programa CMake, incluidos el nombre y la extensión del archivo.The full path to the CMake program executable, including the file name and extension. Permite usar una versión personalizada de CMake con Visual Studio.It allows you to use a custom version of CMake with Visual Studio. Para las compilaciones remotas, especifique la ubicación de CMake en el equipo remoto.For remote builds, specify the CMake location on the remote machine.

Para las configuraciones como Linux en las que se usan compilaciones remotas, también están disponibles las opciones siguientes:For configurations such as Linux that use remote builds, the following settings are also available:

CMakeLists.txt raíz remotoRemote CMakeLists.txt root

El directorio de la máquina remota que contiene el archivo raíz CMakeLists.txt.The directory on the remote machine that contains the root CMakeLists.txt file.

Raíz de instalación remotaRemote install root

El directorio del equipo remoto en el que CMake instala los destinos.The directory on the remote machine in which CMake installs targets. Se asigna a CMAKE_INSTALL_PREFIX.Maps to CMAKE_INSTALL_PREFIX.

Copiar orígenes en remotoRemote copy sources

Especifica si se deben copiar los archivos de código fuente en la máquina remota y permite especificar si se debe usar rsync o sftp.Specifies whether to copy source files to the remote machine, and lets you specify whether to use rsync or sftp.

Modificación directa del archivo CMakeSettings.jsonDirectly edit CMakeSettings.json

También puede editar CMakeSettings.json directamente para crear configuraciones personalizadas.You can also directly edit CMakeSettings.json to create custom configurations. El Editor de configuración tiene un botón Editar JSON en la esquina superior derecha que abre el archivo para la edición.The Settings Editor has an Edit JSON button in the upper right that opens the file for editing.

En el ejemplo siguiente se muestra un ejemplo de configuración, que se puede usar como punto de partida:The following example shows a sample configuration, which you can use as a starting point:

    {
      "name": "x86-Debug",
      "generator": "Ninja",
      "configurationType": "Debug",
      "inheritEnvironments": [ "msvc_x86" ],
      "buildRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\build\\${name}",
      "installRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\install\\${name}",
      "cmakeCommandArgs": "",
      "buildCommandArgs": "-v",
      "ctestCommandArgs": ""
    },

IntelliSense de JSON ayuda a editar el archivo CMakeSettings.json :JSON IntelliSense helps you edit the CMakeSettings.json file:

IntelliSense de JSON para CMakeCMake JSON IntelliSense

El editor de JSON también le informa cuando elige opciones incompatibles.The JSON editor also informs you when you choose incompatible settings.

Para más información sobre cada una de las propiedades del archivo, vea Referencia del esquema de CMakeSettings.json.For more information about each of the properties in the file, see CMakeSettings.json schema reference.

Visual Studio 2017 proporciona varias configuraciones de CMake que definen cómo se invoca CMake.exe para crear una caché de CMake para un proyecto determinado.Visual Studio 2017 provides several CMake configurations that define how CMake.exe is invoked to create the CMake cache for a given project. Para agregar una configuración nueva, haga clic en el menú desplegable Configuración de la barra de herramientas y seleccione Administrar configuraciones :To add a new configuration, click the configuration drop-down in the toolbar and choose Manage Configurations :

Administrar configuraciones de CMake

Puede elegir una de las opciones de la lista de configuraciones predefinidas:You can choose from the list of predefined configurations:

Configuraciones predefinidas de CMake

La primera vez que seleccione una configuración, Visual Studio creará un archivo CMakeSettings.json en la carpeta raíz del proyecto.The first time you select a configuration, Visual Studio creates a CMakeSettings.json file in your project's root folder. Este archivo se usa para volver a crear el archivo de caché de CMake, por ejemplo después de una operación Limpiar.This file is used to re-create the CMake cache file, for example after a Clean operation.

Para agregar una configuración adicional, haga clic con el botón derecho en CMakeSettings.json y elija Agregar configuración.To add an additional configuration, right click CMakeSettings.json and choose Add Configuration.

Agregar configuración en CMakeCMake Add configuration

También puede editar el archivo mediante el Editor de configuración de CMake.You can also edit the file using the CMake Settings Editor. Haga clic con el botón derecho en CMakeSettings.json en el Explorador de soluciones y seleccione Editar configuración de CMake.Right-click on CMakeSettings.json in Solution Explorer and choose Edit CMake Settings. También puede seleccionar Administrar configuraciones en la lista desplegable de configuraciones en la parte superior de la ventana del editor.Or, select Manage Configurations from the configuration drop-down at the top of the editor window.

También puede editar CMakeSettings.json directamente para crear configuraciones personalizadas.You can also directly edit CMakeSettings.json to create custom configurations. En el ejemplo siguiente se muestra un ejemplo de configuración, que se puede usar como punto de partida:The following example shows a sample configuration, which you can use as a starting point:

    {
      "name": "x86-Debug",
      "generator": "Ninja",
      "configurationType": "Debug",
      "inheritEnvironments": [ "msvc_x86" ],
      "buildRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\build\\${name}",
      "installRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\install\\${name}",
      "cmakeCommandArgs": "",
      "buildCommandArgs": "-v",
      "ctestCommandArgs": ""
    },

IntelliSense de JSON ayuda a editar el archivo CMakeSettings.json :JSON IntelliSense helps you edit the CMakeSettings.json file:

IntelliSense de JSON para CMakeCMake JSON IntelliSense

Para más información sobre cada una de las propiedades del archivo, vea Referencia del esquema de CMakeSettings.json.For more information about each of the properties in the file, see CMakeSettings.json schema reference.

Vea tambiénSee also

Proyectos de CMake en Visual StudioCMake Projects in Visual Studio
Configuración de un proyecto de CMake en LinuxConfigure a Linux CMake project
Conexión al equipo remoto de LinuxConnect to your remote Linux computer
Configuración de sesiones de depuración de CMakeConfigure CMake debugging sessions
Implementación, ejecución y depuración del proyecto de LinuxDeploy, run, and debug your Linux project
Referencia de configuración predefinida de CMakeCMake predefined configuration reference