Personnaliser des paramètres de génération CMake

Visual Studio utilise un fichier de configuration CMake pour piloter la génération et la génération CMake. CMakePresets.json est pris en charge par Visual Studio 2019 version 16.10 ou ultérieure et est le fichier de configuration CMake recommandé. CMakePresets.json est pris en charge directement par CMake et peut être utilisé pour piloter la génération et la génération CMake à partir de Visual Studio, à partir de VS Code, dans un pipeline d’intégration continue et à partir de la ligne de commande sur Windows, Linux et Mac. Pour plus d’informations sur CMakePresets.json, consultez Configurer et générer avec les présélections CMake.

Si vous gérez des projets qui utilisent un fichier pour la CMakeSettings.json configuration de build CMake, Visual Studio 2019 et versions ultérieures fournissent un éditeur de paramètres CMake. L’éditeur vous permet d’ajouter des configurations CMake et de personnaliser facilement leurs paramètres. Il s’agit d’une alternative plus simple à la modification manuelle du CMakeSettings.json fichier. Toutefois, si vous préférez modifier le fichier directement, vous pouvez sélectionner le lien Modifier json en haut à droite de l’éditeur.

Pour ouvrir l’éditeur de paramètres CMake, sélectionnez la liste déroulante Configuration dans la barre d’outils principale et choisissez Gérer les configurations.

Screenshot of the CMake configuration drop-down. Manage Configurations is highlighted.

Maintenant, vous voyez l’éditeur de paramètres, avec les configurations installées sur la gauche.

Screenshot of the CMake settings editor.

Le volet gauche affiche les configurations installées (x86-Debug). Le volet droit affiche les paramètres de la configuration sélectionnée. Les paramètres incluent le nom de configuration, le type de configuration (défini sur Déboguer), l’ensemble d’outils (défini sur msvc_x86), le fichier de chaîne d’outils CMake (vide), la racine de build (contient ${env :USERPROFILE}\CMakeBuilds\${workspaceHash}\build\${name}), les arguments de commande CMake (vide) et les arguments de commande de génération (-v).

Visual Studio fournit une x64-Debug configuration par défaut. Vous pouvez ajouter d’autres configurations en choisissant le signe plus vert. Les paramètres que vous voyez dans l’éditeur peuvent varier en fonction de la configuration sélectionnée.

Les options que vous choisissez dans l’éditeur sont écrites dans un fichier appelé CMakeSettings.json. Ce fichier fournit des arguments de ligne de commande et des variables d’environnement qui sont passés à CMake quand vous générez les projets. Visual Studio ne modifie jamais CMakeLists.txt automatiquement ; en utilisant CMakeSettings.json vous pouvez personnaliser la build via Visual Studio tout en laissant les fichiers de projet CMake inchangés afin que d’autres membres de votre équipe puissent les consommer avec les outils qu’ils utilisent.

Paramètres généraux CMake

Les paramètres suivants sont disponibles sous le titre Général :

Nom de la configuration

Correspond au paramètre name. Ce nom apparaît dans la liste déroulante de configuration C++. Vous pouvez utiliser la macro ${name} pour composer d’autres valeurs de propriété telles que des chemins.

Type de configuration

Correspond au paramètre configurationType. Définit le type de configuration de build du générateur sélectionné. Actuellement, les valeurs prises en charge sont Debug, MinSizeRel, Release et RelWithDebInfo. Elle est mappée à CMAKE_BUILD_TYPE.

Ensemble d'outils

Correspond au paramètre inheritedEnvironments. Définit l’environnement du compilateur utilisé pour générer la configuration sélectionnée. Les valeurs prises en charge varient selon le type de configuration. Pour créer un environnement personnalisé, choisissez le lien Modifier JSON dans le coin supérieur droit de l’éditeur Paramètres, puis modifiez le CMakeSettings.json fichier directement.

Fichier de chaîne d’outils CMake

Chemin d’accès au fichier de chaîne d’outils CMake. Ce chemin d’accès est transmis à CMake en tant que « -DCMAKE_TOOLCHAIN_FILE = <filepath> ». Les fichiers de chaîne d’outils spécifient des emplacements des compilateurs et des utilitaires de chaîne d’outils, ainsi que d’autres informations relatives à la plateforme cible et au compilateur. Par défaut, Visual Studio utilise le fichier de chaîne d’outils vcpkg si ce paramètre n’est pas spécifié.

Racine de build

Correspond à buildRoot. Cartes à CMAKE_BINARY_DIR, et spécifie où créer le cache CMake. Le dossier spécifié est créé s’il n’existe pas.

Arguments de la commande

Les paramètres suivants sont disponibles sous le titre Arguments de la commande  :

Arguments de commande CMake

Correspond à cmakeCommandArgs. Spécifie d’autres options de ligne de commande passées à CMake.

Arguments de commande de build

Correspond à buildCommandArgs. Spécifie d’autres commutateurs à passer au système de build sous-jacent. Par exemple, le passage -v lors de l’utilisation du générateur Ninja force Ninja à générer des lignes de commande.

Arguments de commande CTest

Correspond à ctestCommandArgs. Spécifie d’autres options de ligne de commande à passer à CTest lors de l’exécution de tests.

Paramètres généraux pour les builds distantes

Pour les configurations telles que Linux qui utilisent des builds distantes, les paramètres suivants sont également disponibles :

rsync arguments de commande

Options de ligne de commande supplémentaires passées à rsync, un outil de copie de fichiers rapide et polyvalent.

Variables et cache CMake

Ces paramètres vous permettent de définir des variables CMake et de les enregistrer.CMakeSettings.json Ils sont passés à CMake au moment de la génération et remplacent les valeurs qui se trouvent dans le CMakeLists.txt fichier. Vous pouvez utiliser cette section de la même façon que l’interface CMakeGUI pour afficher la liste de toutes les variables CMake modifiables. Choisissez le bouton Enregistrer et générer le cache pour afficher la liste de toutes les variables CMake disponibles à modifier, y compris les variables avancées (conformément à CMakeGUI). Vous pouvez filtrer la liste par nom de variable.

Correspond aux variables. Contient une paire nom-valeur des variables CMake passées en tant que -D name=value CMake. Si vos instructions de génération de projet CMake spécifient l’ajout de toutes les variables directement au fichier de cache CMake, nous vous recommandons de les ajouter ici à la place.

Paramètres avancés

Générateur CMake

Correspond au générateur. Cartes au commutateur CMake -G et spécifie le générateur CMake à utiliser. Cette propriété peut également être utilisée en tant que macro, ${generator}, quand vous rédigez d’autres valeurs de propriétés. Visual Studio prend actuellement en charge les générateurs CMake suivants :

  • « Ninja »
  • « Unix Makefiles »
  • « Visual Studio 16 2019 »
  • « Visual Studio 16 2019 Win64 »
  • « Visual Studio 16 2019 ARM »
  • « Visual Studio 15 2017 »
  • « Visual Studio 15 2017 Win64 »
  • « Visual Studio 15 2017 ARM »
  • « Visual Studio 14 2015 »
  • « Visual Studio 14 2015 Win64 »
  • « Visual Studio 14 2015 ARM »

Étant donné que Ninja est conçu pour des vitesses de génération rapides au lieu de flexibilité et de fonction, il est défini comme valeur par défaut. Toutefois, certains projets CMake peuvent ne pas être correctement générés à l’aide de Ninja. Si cela se produit, vous pouvez demander à CMake de générer un projet Visual Studio à la place.

Mode IntelliSense

Mode IntelliSense utilisé par le moteur IntelliSense. Si aucun mode n’est sélectionné, Visual Studio hérite du mode de l’ensemble d’outils spécifié.

Répertoire d’installation

Répertoire dans lequel CMake installe des cibles. Mappe à CMAKE_INSTALL_PREFIX.

Exécutable CMake

Chemin complet de l’exécutable du programme CMake, y compris le nom de fichier et l’extension. Il vous permet d’utiliser une version personnalisée de CMake avec Visual Studio. Pour les builds distantes, spécifiez l’emplacement CMake sur l’ordinateur distant.

Pour les configurations telles que Linux qui utilisent des builds distantes, les paramètres suivants sont également disponibles :

Racine CMakeLists.txt distante

Répertoire sur l’ordinateur distant qui contient le fichier racine CMakeLists.txt .

Racine d’installation distante

Répertoire de l’ordinateur distant dans lequel CMake installe les cibles. Mappe à CMAKE_INSTALL_PREFIX.

Copier les sources sur la machine distante

Spécifie s’il faut copier des fichiers sources sur l’ordinateur distant et vous permet de spécifier s’il faut utiliser rsync ou sftp.

Modifier CMakeSettings.json directement

Vous pouvez également modifier CMakeSettings.json directement pour créer des configurations personnalisées. L’éditeur de paramètres a un bouton Modifier JSON en haut à droite qui ouvre le fichier en vue de sa modification.

L’exemple suivant illustre une configuration, que vous pouvez utiliser comme point de départ :

    {
      "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": ""
    },

JSON IntelliSense vous permet de modifier le fichier CMakeSettings.json :

Screenshot of the CMake JSON IntelliSense pop-up in the editor.

L’éditeur JSON vous informe également lorsque vous choisissez des paramètres incompatibles.

Pour plus d’informations sur chacune des propriétés dans le fichier, consultez Informations de référence sur le schéma CMakeSettings.json.

Visual Studio 2017 fournit plusieurs configurations CMake qui définissent la façon dont CMake est appelé pour créer le cache CMake pour un projet donné. Pour ajouter une nouvelle configuration, sélectionnez la liste déroulante de configuration dans la barre d’outils et choisissez Gérer les configurations :

Screenshot of Manage configurations selected in the drop-down.

Vous pouvez choisir dans la liste des configurations prédéfinies :

Add Configuration to CMake Settings dialog list of predefined configurations.

La première fois que vous sélectionnez une configuration, Visual Studio crée un CMakeSettings.json fichier dans le dossier racine de votre projet. Ce fichier est utilisé pour recréer le fichier de cache CMake, par exemple, après une opération Clean.

Pour ajouter une autre configuration, cliquez avec le bouton CMakeSettings.json droit et choisissez Ajouter une configuration.

Screenshot of the shortcut menu with Add configuration selected.

Vous pouvez également modifier le fichier en utilisant l’éditeur de paramètres CMake. Cliquez avec CMakeSettings.json le bouton droit sur Explorateur de solutions et choisissez Modifier le Paramètres CMake. Ou sélectionnez Gérer les configurations dans la liste déroulante de configuration en haut de la fenêtre de l’éditeur.

Vous pouvez également modifier CMakeSettings.json directement pour créer des configurations personnalisées. L’exemple suivant illustre une configuration, que vous pouvez utiliser comme point de départ :

    {
      "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": ""
    },

JSON IntelliSense vous permet de modifier le fichier CMakeSettings.json :

Screenshot of the CMake JSON IntelliSense pop-up in the editor.

La fenêtre contextuelle Json IntelliSense pour « configurations » affiche buildCommandArgs, buildRoot, cmakeCommandArgs, configurationType, entre autres.

Pour plus d’informations sur chacune des propriétés du fichier, consultez CMakeSettings.json la référence de schéma.

Voir aussi

Projets CMake dans Visual Studio
Configurer un projet CMake Linux
Se connecter à un ordinateur Linux distant
Configurer des sessions de débogage CMake
Déployer, exécuter et déboguer un projet Linux
Informations de référence sur la configuration prédéfinie de CMake