Partage via


Configurer un projet CMake Linux dans Visual Studio

La prise en charge Linux est disponible dans Visual Studio 2017 et ultérieur. Pour afficher la documentation sur ces versions, définissez la liste déroulante Version située au-dessus de la table des matières sur Visual Studio 2017 ou Visual Studio 2019.

Cette rubrique explique comment ajouter une configuration Linux à un projet CMake qui cible un système Linux distant ou un Sous-système Windows pour Linux (WSL). Elle fait suite à la série qui commençait par Créer un projet CMake Linux dans Visual Studio. Si vous utilisez plutôt MSBuild, consultez Configurer un projet MSBuild Linux dans Visual Studio.

Ajouter une configuration Linux

Une configuration peut être utilisée pour cibler différentes plateformes (Windows, WSL, système distant) avec le même code source. Une configuration est également utilisée pour définir vos compilateurs, passer des variables d’environnement et personnaliser la façon dont CMake est appelé. Le fichier CMakeSettings.json spécifie certaines ou toutes les propriétés répertoriées dans Personnaliser les paramètres CMake, ainsi que d’autres propriétés qui contrôlent les paramètres de build sur la machine Linux distante.

Pour modifier les paramètres CMake par défaut dans Visual Studio 2017, dans le menu principal, choisissez CMake>Modifier les paramètres CMake>CMakeLists.txt. Vous pouvez également cliquer avec le bouton droit sur CMakeLists.txt dans l’Explorateur de solutions, puis choisir Modifier les paramètres CMake. Visual Studio crée ensuite un nouveau fichier CMakeSettings.json dans votre dossier de projet racine. Pour apporter des modifications, ouvrez le fichier et modifiez-le directement. Pour plus d’informations, consultez Personnaliser les paramètres CMake.

La configuration par défaut pour Linux-Debug dans Visual Studio 2017 (et Visual Studio 2019 version 16.0) ressemble à ceci :

{
  "configurations": [
    {
      "name": "Linux-Debug",
      "generator": "Unix Makefiles",
      "remoteMachineName": "${defaultRemoteMachineName}",
      "configurationType": "Debug",
      "remoteCMakeListsRoot": "/var/tmp/src/${workspaceHash}/${name}",
      "cmakeExecutable": "/usr/local/bin/cmake",
      "buildRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\build\\${name}",
      "installRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\install\\${name}",
      "remoteBuildRoot": "/var/tmp/build/${workspaceHash}/build/${name}",
      "remoteInstallRoot": "/var/tmp/build/${workspaceHash}/install/${name}",
      "remoteCopySources": true,
      "remoteCopySourcesOutputVerbosity": "Normal",
      "remoteCopySourcesConcurrentCopies": "10",
      "remoteCopySourcesMethod": "rsync",
      "remoteCopySourcesExclusionList": [
        ".vs",
        ".git"
      ],
      "rsyncCommandArgs": "-t --delete --delete-excluded",
      "remoteCopyBuildOutput": false,
      "cmakeCommandArgs": "",
      "buildCommandArgs": "",
      "ctestCommandArgs": "",
      "inheritEnvironments": [
        "linux_x64"
      ]
    }
  ]
}

Pour changer les paramètres CMake par défaut dans Visual Studio 2019 ou version ultérieure, dans la barre d’outils principale, ouvrez la liste déroulante Configuration, puis choisissez Gérer les configurations.

Capture d’écran montrant CMake Manage Configurations (Gérer les configurations CMake) en évidence dans la liste déroulante Configuration.

Cette commande ouvre l’éditeur de paramètres CMake qui vous permet de modifier le fichier CMakeSettings.json situé dans le dossier de projet racine. Vous pouvez également ouvrir le fichier avec l’éditeur JSON en cliquant sur le bouton Modifier json en haut à droite de la boîte de dialogue Paramètres CMake. Pour plus d’informations, consultez Personnaliser les paramètres CMake.

La configuration par défaut de Linux-Debug dans Visual Studio 2019 versions 16.1 et ultérieures ressemble à ceci :

{
  "configurations": [
    {
      "name": "Linux-GCC-Debug",
      "generator": "Ninja",
      "configurationType": "Debug",
      "cmakeExecutable": "cmake",
      "remoteCopySourcesExclusionList": [ ".vs", ".git", "out" ],
      "cmakeCommandArgs": "",
      "buildCommandArgs": "",
      "ctestCommandArgs": "",
      "inheritEnvironments": [ "linux_x64" ],
      "remoteMachineName": "${defaultRemoteMachineName}",
      "remoteCMakeListsRoot": "$HOME/.vs/${projectDirName}/${workspaceHash}/src",
      "remoteBuildRoot": "$HOME/.vs/${projectDirName}/${workspaceHash}/out/build/${name}",
      "remoteInstallRoot": "$HOME/.vs/${projectDirName}/${workspaceHash}/out/install/${name}",
      "remoteCopySources": true,
      "rsyncCommandArgs": "-t --delete --delete-excluded",
      "remoteCopyBuildOutput": false,
      "remoteCopySourcesMethod": "rsync",
      "variables": []
    }
  ]
}

Dans Visual Studio 2019 version 16.6 ou ultérieure, Ninja est le générateur par défaut pour les configurations ciblant un système distant ou WSL, par opposition aux Makefiles Unix. Pour plus d’informations, consultez ce billet sur le Blog de l’équipe C++.

Pour plus d’informations sur ces paramètres, consultez la Référence de CMakeSettings.json.

Quand vous effectuez une build :

  • Si vous ciblez un système distant, Visual Studio choisit le premier système distant dans la liste sous Outils>Options>Multiplateforme>Gestionnaire de connexions par défaut pour les cibles distantes.
  • Si aucune connexion distante n’est trouvée, vous êtes invité à en créer une. Pour plus d’informations, consultez Se connecter à un ordinateur Linux distant.

Choisir une cible Linux

Lorsque vous ouvrez un dossier de projet CMake, Visual Studio analyse le fichier CMakeLists.txt et spécifie la cible Windows de x86-Debug. Pour cibler un système Linux distant, vous allez modifier les paramètres du projet en fonction de votre compilateur Linux. Par exemple, si vous utilisez GCC sur Linux et compilez avec des informations de débogage, choisissez : Linux-GCC-Debug ou Linux-GCC-Release.

Si vous spécifiez une cible Linux distante, votre source est copiée sur le système distant.

Une fois que vous sélectionnez une cible, CMake s’exécute automatiquement sur le système Linux afin de générer le cache CMake pour votre projet :

Capture d’écran de Visual Studio montrant la sortie de Generate CMake cache on Linux (Générer le cache CMake sur Linux).

Sous-système Windows pour Linux

Si vous ciblez le Sous-système Windows pour Linux (WSL), vous n’avez pas besoin d’ajouter une connexion à distance.

Pour cibler WSL, dans la liste déroulante de configuration de la barre d’outils principale, sélectionnez Gérer les configurations :

Liste déroulante CMake Configurations (Configurations CMake) avec l’option Manage Configurations (Gérer les configurations) sélectionnée

La fenêtre CMakeSettings.json s’affiche.

Boîte de dialogue des paramètres CMake avec le bouton plus en évidence, qui ajoute la configuration sélectionnée, à savoir Linux-GCC-debug.

Appuyez sur Ajouter une configuration (le bouton vert « + »), puis choisissez Linux-GCC-Debug ou Linux-GCC-Release si vous utilisez GCC. Utilisez les variantes Clang si vous utilisez l’ensemble d’outils Clang/LLVM. Appuyez sur Sélectionner, puis sur Ctrl+S pour enregistrer la configuration.

Visual Studio 2019 version 16.1 Lorsque vous ciblez WSL, Visual Studio n’a pas besoin de copier les fichiers sources et de gérer deux copies synchrones de votre arborescence de build, car le compilateur sur Linux a un accès direct à vos fichiers sources dans le système de fichiers Windows monté.

IntelliSense

IntelliSense pour C++ nécessite l’accès aux en-têtes C++ référencés par vos fichiers sources C++. Visual Studio utilise automatiquement les en-têtes référencés par un projet CMake de Linux vers Windows pour fournir une expérience IntelliSense d’une fidélité optimale. Pour plus d’informations, consultez IntelliSense pour les en-têtes distants.

Définition des paramètres régionaux

Les paramètres de langue Visual Studio ne sont pas propagés aux cibles Linux, car Visual Studio ne gère ou configure pas les packages installés. Les messages affichés dans la fenêtre Sortie, tels que les erreurs de build, sont présentés en utilisant la langue et les paramètres régionaux de la cible Linux. Vous devez configurer vos cibles Linux pour les paramètres régionaux souhaités.

Paramètres supplémentaires

Utilisez les paramètres suivants pour exécuter des commandes sur le système Linux avant et après la build, et avant la génération CMake. Les valeurs peuvent correspondre à n’importe quelle commande valide sur le système distant. La sortie est redirigée vers Visual Studio.

{
      "remotePrebuildCommand": "",
      "remotePreGenerateCommand": "",
      "remotePostbuildCommand": "",
}

Étapes suivantes

Configurer des sessions de débogage CMake

Voir aussi

Utilisation de propriétés de projet
Personnaliser les paramètres CMake
Informations de référence sur la configuration prédéfinie de CMake