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.
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 :
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 :
La fenêtre CMakeSettings.json s’affiche.
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 génération, 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