Configurer un projet Linux MSBuild C++ dans Visual Studio

La prise en charge Linux est disponible dans Visual Studio 2017 et ultérieur.

Cette rubrique explique comment configurer un projet Linux basé sur MSBuild comme décrit dans Créer un projet Linux MSBuild C++ dans Visual Studio. Pour les projets Linux CMake, consultez Configurer un projet Linux CMake.

Vous pouvez configurer un projet Linux pour cibler une machine Linux physique, une machine virtuelle ou le sous-système Windows pour Linux (WSL).

Visual Studio 2019 16.1 et versions ultérieures :

  • Lorsque vous ciblez WSL, vous pouvez éviter les opérations de copie nécessaires à la génération et à l’obtention d’IntelliSense requises lorsque vous ciblez un système Linux distant.

  • Vous pouvez spécifier des cibles Linux distinctes pour la génération et le débogage.

Paramètres généraux :

Pour afficher les options de configuration, sélectionnez le menu Projet > Propriétés ou cliquez avec le bouton droit sur le projet dans l’Explorateur de solutions et sélectionnez Propriétés dans le menu contextuel. Les paramètres généraux s’affichent dans la section Général.

Capture d’écran de la boîte de dialogue Pages de propriétés Configuration générale.

Par défaut, un fichier exécutable (.out) est généré. Pour générer une bibliothèque statique ou dynamique, ou utiliser un fichier makefile existant, utilisez le paramètre Type de configuration.

Si vous générez pour Windows Subsystem for Linux (WSL), WSL Version 1 est limité à 64 processus de compilation parallèles. Cela est régi par le paramètre Nombre maximal de travaux de compilation parallèles dans Propriétés de configuration > C/C++ > Général.

Quelle que soit la version de WSL que vous utilisez, si vous envisagez d’utiliser plus de 64 processus de compilation parallèles, nous vous recommandons de générer avec Ninja qui sera généralement plus rapide et plus fiable. Pour générer avec Ninja, utilisez le paramètre Activer la génération incrémentielle dans Propriétés de configuration > Général.

Pour plus d’informations sur les paramètres dans les pages de propriétés, consultez Informations de référence sur les pages de propriétés dans un projet Linux.

Paramètres distants

Pour changer les paramètres relatifs à l’ordinateur Linux distant, configurez les paramètres distants affichés sous Général.

  • Pour spécifier un ordinateur Linux cible distant, utilisez l’entrée Machine de build distante. Cela vous permet de sélectionner l’une des connexions créées précédemment. Pour créer une entrée, consultez la section Connexion à votre ordinateur Linux distant.

    Capture d’écran montrant la machine de génération distante.

    Visual Studio 2019 version 16.7 et versions ultérieures : pour cibler Windows Subsystem for Linux (WSL), définissez la liste déroulante Ensemble d’outils de plateforme sur GCC pour Sous-système Windows pour Linux. Les autres options distantes disparaissent et le chemin de l’interpréteur de commandes WSL par défaut s’affiche à leur place :

    Capture d’écran montrant la machine de génération WSL.

    Si vous avez des installations de WSL côte à côte, vous pouvez spécifier ici un autre chemin. Pour plus d’informations sur la gestion de plusieurs distributions, consultez Gérer et configurer le sous-système Windows pour Linux.

    Vous pouvez spécifier une autre cible pour le débogage dans la page Propriétés de configuration>Débogage.

  • L’entrée Répertoire racine de build distant définit l’emplacement racine de l’endroit où le projet est généré sur l’ordinateur Linux distant. Par défaut et en l’absence de modification, il s’agit de ~/projects.

  • L’entrée Répertoire de projet de build distant définit l’emplacement où ce projet spécifique est généré sur l’ordinateur Linux distant. Par défaut, il s’agit de $(RemoteRootDir)/$(ProjectName), qui se développe jusqu’à un répertoire nommé d’après le projet actuel, sous le répertoire racine défini ci-dessus.

Notes

Pour changer les compilateurs C et C++ par défaut, ou l’éditeur de liens et le programme d’archivage utilisés pour générer le projet, utilisez les entrées appropriées dans les sections C/C++ > Général et Éditeur de liens > Général. Vous pouvez spécifier une version spécifique de GCC ou Clang, par exemple. Pour plus d’informations, consultez C/C++, propriétés (Linux C++) et Éditeur de liens, propriétés (Linux C++).

Copier les sources (uniquement pour les systèmes distants)

Notes

Cette section ne s’applique pas quand vous ciblez WSL.

Lors de la génération sur des systèmes distants, les fichiers sources sur votre PC de développement sont copiés sur l’ordinateur Linux où ils sont compilés. Par défaut, toutes les sources dans le projet Visual Studio sont copiées aux emplacements définis dans les paramètres ci-dessus. Toutefois, des sources supplémentaires peuvent également être ajoutées à la liste, ou la copie des sources peut être entièrement désactivée, ce qui est le paramètre par défaut d’un projet Makefile.

  • L’option Sources à copier détermine quelles sources sont copiées sur l’ordinateur distant. Par défaut, (SourcesToCopyRemotely) est défini sur tous les fichiers de code source dans le projet, mais n’inclut pas les fichiers d’actifs/de ressources, comme les images.

  • L’option Copier les sources peut être activée et désactivée pour activer et désactiver la copie des fichiers sources sur l’ordinateur distant.

  • L’option Sources supplémentaires à copier vous permet d’ajouter des fichiers sources supplémentaires qui seront copiés sur le système distant. Vous pouvez spécifier une liste délimitée par des points-virgules ou utiliser la syntaxe := pour spécifier un nom local et distant à utiliser :

C:\Projects\ConsoleApplication1\MyFile.cpp:=~/projects/ConsoleApplication1/ADifferentName.cpp;C:\Projects\ConsoleApplication1\MyFile2.cpp:=~/projects/ConsoleApplication1/ADifferentName2.cpp;

Événements de build

Étant donné que toute la compilation se produit sur un ordinateur distant (ou WSL), plusieurs événements de build supplémentaires ont été ajoutés à la section Événements de build dans les propriétés de projet. Il s’agit des événements suivants : Événement prébuild distant, Événement de préédition des liens distant et Événement post-build distant. Ils se produisent sur l’ordinateur distant avant ou après les différentes étapes du processus.

Capture d’écran de la boîte de dialogue Pages de propriétés montrant les Événements de build.

IntelliSense pour les en-têtes sur les systèmes distants

Quand vous ajoutez une nouvelle connexion dans le Gestionnaire de connexions, Visual Studio détecte automatiquement les répertoires include pour le compilateur sur le système distant. Visual Studio compresse ensuite ces fichiers et les copie dans un répertoire sur votre ordinateur Windows local. Après cela, chaque fois que vous utilisez cette connexion dans un projet Visual Studio ou CMake, les en-têtes dans ces répertoires sont utilisés pour fournir IntelliSense.

Notes

Dans Visual Studio 2019 version 16.5 et ultérieure, la copie d’en-tête distante a été optimisée. Les en-têtes sont maintenant copiés à la demande lors de l’ouverture d’un projet Linux ou de la configuration de CMake pour une cible Linux. La copie se produit en arrière-plan par projet, en fonction des compilateurs spécifiés du projet. Pour plus d’informations, consultez Améliorations apportées à la précision et aux performances de Linux IntelliSense.

Cette fonctionnalité nécessite l’installation de zip sur l’ordinateur Linux. Pour installer zip, utilisez cette commande apt-get :

sudo apt install zip

Pour gérer votre cache d’en-têtes, accédez à Outils >Options, Multiplateforme > Gestionnaire de connexions > Gestionnaire IntelliSense des en-têtes distants. Pour mettre à jour le cache d’en-têtes après avoir effectué des changements sur votre ordinateur Linux, sélectionnez la connexion à distance, puis sélectionnez Mettre à jour. Sélectionnez Supprimer pour supprimer les en-têtes tout en conservant la connexion. Sélectionnez Explorer pour ouvrir le répertoire local dans l’Explorateur de fichiers. Traitez ce dossier en lecture seule. Pour télécharger des en-têtes pour une connexion existante créée avant Visual Studio 2017 version 15.3, sélectionnez la connexion, puis choisissez Télécharger.

Capture d’écran montrant la boîte de dialogue Options avec l’option Multiplateforme > Gestionnaire des connexions > Gestionnaire IntelliSense des en-têtes distants sélectionnée.

Capture d’écran montrant la boîte de dialogue Options avec l’option Multiplateforme > Gestionnaire des connexions sélectionnée.

Vous pouvez activer la journalisation pour faciliter la résolution des problèmes :

Capture d’écran de la boîte de dialogue Options affichant les options de Journalisation à distance.

Paramètres régionaux cibles Linux

Les paramètres de langue Visual Studio ne sont pas propagés aux cibles Linux, car Visual Studio ne gère ni ne 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.

Voir aussi

Définir des propriétés de build et de compilateur
Général C++, propriétés (Linux C++)
Répertoires VC++ (Linux C++)
Copier les sources, propriétés de projet (Linux C++)
Événement de build, propriétés (Linux C++)