Projets CMake dans Visual Studio
CMake est un outil open source multiplateforme utilisé pour définir des processus de génération qui s’exécutent sur plusieurs plateformes. Cet article part du principe que vous connaissez déjà CMake. Pour plus d’informations sur CMake, consultez la documentation de CMake. Le didacticiel CMake est un bon point de départ pour en savoir plus.
Remarque
Au cours des dernières versions, CMake est devenu de plus en plus intégré à Visual Studio. Pour consulter la documentation sur votre version préférée de Visual Studio, utilisez le contrôle de sélection de Version . Il se trouve en haut de la table des matières de cette page.
La prise en charge native de Visual Studio pour CMake vous permet de modifier, générer et déboguer des projets CMake sur Windows, le Sous-système Windows pour Linux (WSL) et les systèmes distants à partir de la même instance de Visual Studio. Les fichiers projet CMake (tels que CMakeLists.txt
) sont consommés directement par Visual Studio à des fins d’IntelliSense et de navigation. cmake.exe
est appelé directement par Visual Studio pour la configuration et la génération CMake.
Installation
Outils C++ CMake pour Windows est installé dans le cadre du développement Desktop avec C++ et du développement Linux avec des charges de travail C++. Les outils CMake C++ pour Windows et Développement Linux avec C++ sont nécessaires pour le développement CMake multiplateforme.
Dans le programme d’installation, le développement Desktop avec la liste déroulante C++ est sélectionné et les outils C++ et C Make pour Windows sont sélectionnés.
Pour plus d’informations, consultez Installer la charge de travail Linux C++ dans Visual Studio.
Intégration de l’IDE
Lorsque vous ouvrez un dossier contenant un fichier CMakeLists.txt
, les choses suivantes se produisent.
La boîte de dialogue propose ces options : cloner un référentiel, ouvrir un projet ou une solution, ouvrir un dossier local ou créer un projet. Ouvrir un dossier local est appelé dans la capture d’écran.
Visual Studio ajoute des éléments CMake au menu de Projet, avec des commandes pour voir et modifier les scripts CMake.
L’Explorateur de solutions affiche la structure de dossiers et les fichiers.
Visual Studio exécute CMake et génère le fichier cache CMake (
CMakeCache.txt
) pour la configuration par défaut. La ligne de commande CMake s’affiche dans la Fenêtre Sortie, ainsi que l’autre sortie de CMake.En arrière-plan, Visual Studio démarre pour indexer les fichiers sources afin d’activer IntelliSense, les informations de navigation, la refactorisation et ainsi de suite. Pendant que vous travaillez, Visual Studio surveille les changements dans l’éditeur et sur le disque pour synchroniser son index avec les sources.
Remarque
À compter de Visual Studio 2022 version 17.1 Preview 2, si votre CMakeLists.txt
de niveau supérieur existe dans un sous-dossier et non à la racine de l’espace de travail, vous serez invité à indiquer si vous souhaitez activer l’intégration CMake ou non. Pour plus d’informations, consultez Activation partielle de CMake.
Une fois la génération du cache CMake réussie, vous pouvez également afficher vos projets organisés logiquement par cibles. Choisissez le bouton Sélectionner l’affichage dans la barre d’outils de l’Explorateur de solutions. Dans la liste de l’Explorateur de solutions - Affichages, sélectionnez Vue CMake Targets, puis appuyez sur Entrée pour ouvrir la vue des cibles :
Choisissez le bouton Afficher tous les fichiers en haut de l’Explorateur de solutions pour afficher toutes les sorties générées par CMake dans les dossiers out/build/<config>
.
Utilisez le fichier CMakeLists.txt
dans chaque dossier de projet comme vous le feriez dans n’importe quel projet CMake. Vous pouvez spécifier des fichiers sources, rechercher des bibliothèques, définir des options du compilateur et de l’éditeur de liens, puis spécifier d’autres informations liées au système de génération. Pour plus d’informations sur les services de langage CMake fournis par Visual Studio, consultez Modification de fichiers CMakeLists.txt.
Visual Studio utilise un fichier de configuration CMake pour entraîner la génération et la création du cache CMake. Pour plus d’informations, consultez Configuration des projets CMake et Génération de projets CMake.
Pour passer des arguments à un exécutable au moment du débogage, vous pouvez utiliser un autre fichier appelé launch.vs.json
. Pour plus d’informations sur le débogage de projets CMake multiplateformes dans Visual Studio, consultez Débogage de projets CMake.
La plupart des fonctionnalités du langage Visual Studio et C++ sont prises en charge par les projets CMake dans Visual Studio. Voici quelques exemples :
- Modifier et continuer pour les projets CMake
- Intégration d’Incredibuild pour les projets CMake
- Prise en charge d’AddressSanitizer pour les projets CMake
- Prise en charge de Clang/LLVM
Remarque
Pour d’autres types de projets Dossier ouvert, un fichier JSON supplémentaires CppProperties.json
est utilisé. Ce fichier n’est pas pertinent pour les projets CMake.
Configuration de projets CMake
L’étape de configuration CMake génère le système de génération de projet. Cette option correspond à invoquer cmake.exe
à partir de la ligne de commande. Pour plus d’informations sur l’étape de configuration de CMake, consultez la Documentation CMake.
Visual Studio utilise un fichier de configuration CMake pour entraîner la génération et la création CMake. CMakePresets.json
est pris en charge par Visual Studio 2019 version 16.10 ou ultérieure et il s’agit du fichier de configuration CMake recommandé. CMakePresets.json
est pris en charge directement par CMake et peut être utilisé pour générer et créer 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. CMakeSettings.json
est disponible pour les clients utilisant une version antérieure de Visual Studio. Pour plus d’informations sur CMakeSettings.json
, consultez Personnaliser les paramètres de génération CMake.
Lorsque vous apportez des modifications significatives à votre fichier de configuration CMake ou à un fichier CMakeLists.txt
, Visual Studio exécute automatiquement l’étape de configuration CMake. Vous pouvez invoquer l’étape de configuration manuellement : sélectionnez Project > Configurer le cache à partir de la barre d’outils. Vous pouvez également modifier vos préférences de configuration dans Tools>Options>CMake>Général.
Les paramètres de configuration CMake sont appelés. Afficher les notification de cache C Make est sélectionné. Sous « Lorsque le cache est obsolète : », l’option « Ne jamais exécuter l’étape de configuration automatiquement » est sélectionnée.
Si l’étape de configuration se termine sans erreur, les informations qui sont disponibles sont les lecteurs C++ IntelliSense et les services de langage. Elles sont également utilisées dans les opérations de génération et de débogage.
Vous pouvez également ouvrir un cache CMake existant dans Visual Studio. Pour plus d’informations, consultez Ouvrir un cache existant.
Personnaliser les commentaires et notifications de configuration
Par défaut, la plupart des messages de configuration sont supprimés, sauf s’il y a une erreur. Pour afficher tous les messages, sélectionnez Outils>Options>CMake>Activer la sortie de diagnostic CMake détaillée.
Vous pouvez également désactiver toutes les notifications de cache CMake (barres d’or) en désélectionnant Afficher la notification de cache CMake.
Résolution des erreurs de cache CMake
Si vous avez besoin de plus d’informations sur l’état du cache CMake pour diagnostiquer un problème, ouvrez le menu principal de Projet ou le menu contextuel CMakeLists.txt
dans l’Explorateur de solutions pour exécuter l’une des commandes suivantes :
Afficher CMakeCache.txt ouvre le fichier
CMakeCache.txt
à partir du répertoire de build dans l’éditeur. Toutes les modifications que vous apportez ici àCMakeCache.txt
sont effacées si vous nettoyez le cache. Pour apporter des modifications qui persistent après avoir nettoyé le cache, consultez Personnaliser les paramètres CMake ou Configurer et générer avec les présélections CMake.Supprimer le cache et reconfigurer supprime le répertoire de build et reconfigure à partir d’un cache propre.
Configurer le cache force l’exécution de l’étape de génération même si Visual Studio considère l’environnement comme étant à jour.
Génération de projets CMake
L’étape de génération CMake génère une arborescence binaire de projet déjà générée. Cette option correspond à invoquer cmake --build
à partir de la ligne de commande. Pour plus d’informations sur l’étape de génération de CMake, consultez la Documentation CMake.
Pour générer un projet CMake, vous avez ces possibilités :
Dans la barre d’outils, recherchez la liste déroulante Élément de démarrage. Sélectionnez la cible préférée, puis appuyez sur F5, ou choisissez le bouton Exécuter dans la barre d’outils. Le projet est d’abord généré automatiquement, comme une solution Visual Studio.
Cliquez avec le bouton droit sur la cible CMake avec Vue CMake Targets active dans l’Explorateur de solutions, puis sélectionnez Générer dans le menu contextuel.
Dans le menu principal, sélectionnez Générer> Générer tout. Vérifiez qu’une cible CMake est déjà sélectionnée dans la liste déroulante Élément de démarrage dans la barre d’outils.
Comme attendu, les résultats de génération sont affichés dans la fenêtre sortie et la Liste des erreurs.
Les avertissements de génération CMake concernant les conversions qui peuvent entraîner une perte de données, comme la conversion d’un flottant en entier, sont visibles. :::image-end:::
Modifier les paramètres de génération
Visual Studio utilise un fichier de configuration CMake pour entraîner la génération CMake. Les fichiers de configuration CMake encapsulent des options de génération telles que les commutateurs d’outils de génération natifs et les variables d’environnement. Si CMakePresets.json
est votre fichier de configuration actif, consultez Configurer et générer avec les présélections CMake. Si CMakeSettings.json
est votre fichier de configuration actif, consultez Personnaliser les paramètres de génération CMake. CMakePresets.json
est disponible dans Visual Studio 2019 version 16.10 ou ultérieure et il s’agit du fichier de configuration CMake recommandé.
Débogage de projets CMake
Toutes les cibles CMake exécutables figurent dans la liste déroulante Élément de démarrage dans la barre d’outils. Pour démarrer le débogage, sélectionnez-en un, puis appuyez sur le bouton Déboguer > Démarrer le débogage dans la barre d’outils. Dans un projet CMake, l’option « Document actif » est uniquement valide pour les fichiers .cpp.
La liste déroulante comporte ces options : Afficher / Masquer les cibles de débogage, document actif, échantillons (mis en surbrillance), box2d_tests et samples-noGUI.
Les commandes Déboguer ou F5 génèrent d’abord le projet si des modifications ont été apportées depuis la dernière génération. Les modifications apportées au fichier de configuration CMake (CMakePresets.json
ou CMakeSettings.json
) ou à un CMakeLists.txt
entraînent la régénération du cache CMake.
Vous pouvez personnaliser une session de débogage CMake en définissant des propriétés dans le fichier launch.vs.json
. Pour personnaliser les paramètres de débogage d’une cible spécifique, sélectionnez la cible dans la liste déroulante Élément de démarrage, puis appuyez sur Débogage > Paramètres de débogage et de lancement pour <cible active>. Pour plus d’informations sur les sessions de débogage CMake, consultez Configurer les sessions de débogage CMake.
Uniquement mon code pour les projets CMake
Lorsque vous générez pour Windows à l’aide du compilateur MSVC, les projets CMake prennent en charge le débogage Uniquement mon code. Pour modifier le paramètre Uniquement mon code, accédez à Outils>Options>Débogage>Général. Pour plus d’informations sur le débogage avec la fonction Uniquement mon code, consultez Déboguer le code utilisateur avec Uniquement mon code.
Modifier et continuer pour les projets CMake
Lorsque vous générez pour Windows avec le compilateur MSVC, les projets CMake prennent en charge Modifier et Continuer. Ajoutez le code suivant à votre fichier CMakeLists.txt
pour activer Modifier et Continuer. Pour plus d’informations sur les fonctions Modifier et Continuer, consultez Configurer Modifier et Continuer (C#, VB, C++).
if(MSVC)
target_compile_options(<target> PUBLIC "/ZI")
target_link_options(<target> PUBLIC "/INCREMENTAL")
endif()
Attacher à un projet CMake s’exécutant sur Linux
Visual Studio vous permet de déboguer un processus s’exécutant sur un système Linux distant ou WSL et de le déboguer avec le débogueur GDB. Pour commencer, sélectionnez Déboguer>Attacher au processus..., définissez le type de connexion sur SSH, puis sélectionnez votre Cible de connexion dans la liste des connexions dans le Gestionnaire de connexions. Sélectionnez un processus dans la liste des processus disponibles, puis appuyez sur Attacher. GDB doit être installé sur votre ordinateur Linux. Pour plus d’informations sur les connexions SSH, consultez le Gestionnaire de connexions
Les options suivantes sont disponibles dans la boîte de dialogue : Type de connexion (défini sur SSH), la cible de connexion (définie sur demo@ 172. 20. 60. 6), ainsi qu’une liste de processus disponibles auquel il est possible d’attacher. »
Activation partielle de CMake
Dans Visual Studio 2022 version 17.1 et ultérieure, la fonctionnalité CMake n’est pas activée automatiquement si votre dossier racine ne contient pas de fichier CMakeLists.txt
. Au lieu de cela, une boîte de dialogue vous invite à savoir si vous souhaitez activer la fonctionnalité CMake pour votre projet. Si vous refusez, la génération du cache CMake ne démarre pas et les configurations CMake (à partir de CMakeSettings.json
ou de CMakePresets.json
) n’apparaissent pas dans la liste déroulante de configuration. Si vous acceptez, vous êtes dirigé vers un fichier de configuration au niveau de l’espace de travail, CMakeWorkspaceSettings.json
(stocké dans le répertoire .vs
), pour spécifier les dossiers que vous souhaitez activer pour CMake. (Ces dossiers contiennent vos fichiers racine CMakeLists.txt
).
Les propriétés acceptées sont les suivantes :
Propriété | Description |
---|---|
enableCMake |
Activez l’intégration de Visual Studio pour cet espace de travail. |
sourceDirectory |
Chaîne ou tableau de chaînes spécifiant le répertoire ou les répertoires avec CMakeLists.txt . Les macros (telles que ${workspaceRoot} ) sont autorisées. Les chemins relatifs sont basés sur la racine de l’espace de travail. Les répertoires en dehors de l’espace de travail actuel sont ignorés. |
Vous pouvez accéder à CMakeWorkspaceSettings.json
via la commande de menu Project>Paramètres de l’espace de travail CMake à tout moment, même si la fonctionnalité CMake est actuellement désactivée.
Ouvrir un cache existant
Lorsque vous ouvrez un fichier de cache CMake existant (CMakeCache.txt
), Visual Studio n’essaie pas de gérer votre cache et votre arborescence de génération pour vous. Vos outils personnalisés ou préférés contrôlent complètement la façon dont CMake configure votre projet.
Vous pouvez ajouter un cache CMake existant à un projet ouvert. Cela se fait de la même façon que vous ajouteriez une nouvelle configuration. Pour plus d’informations, consultez notre billet de blog sur l’Ouverture d’un cache existant dans Visual Studio.
Remarque
L’expérience de cache existante par défaut s’appuie sur cmake-server
, qui a été supprimée de CMake dans la version 3.20. Pour continuer à utiliser les fonctionnalités de cache existantes dans Visual Studio 2019 version 16.10 et ultérieures, effectuez l’une des étapes suivantes :
- Installez manuellement CMake version 3.19 ou inférieure. Ensuite, définissez la propriété
cmakeExecutable
dans votre configuration de cache existante pour utiliser cette version de CMake. - Dans votre configuration de cache existante, définissez la propriété
cacheGenerationCommand
pour permettre à Visual Studio de demander les fichiers API CMake nécessaires. Pour plus d’informations sur cette propriété, consultez Référence CMakeSettings.json. - Utilisez un fichier de requête pour demander les fichiers API basés sur les fichiers CMake lors de la génération de votre cache avant son ouverture dans Visual Studio. Pour obtenir des instructions sur le fichier de requête, consultez la section suivante, Résolution avancée des problèmes du cache CMake.
Résolution avancée des problèmes de cache CMake
Visual Studio utilise l’API CMake basée sur des fichiers (dans les versions 3.14 et ultérieures) pour remplir l’éditeur avec des informations spécifiques à votre structure de projet. Pour plus d’informations, consultez le billet de blog de l’équipe C++ sur Espaces de travail multi-racines et API basée sur des fichiers.
Avant de générer le cache CMake, vos outils personnalisés ou préférés peuvent avoir besoin de créer un fichier de requête nommé .cmake/api/v1/query/client-MicrosoftVS/query.json
dans votre dossier de sortie de build (le dossier qui contient CMakeCache.txt
). Le fichier de requête doit contenir ce contenu :
{"requests":[{"kind":"cache","version":2},{"kind":"cmakeFiles","version":1},{"kind":"codemodel","version":2}]}
Lorsque vos outils personnalisés ou préférés génèrent votre cache, CMake place les fichiers sous .cmake/api/v1/response
que Visual Studio utilise pour remplir l’éditeur avec des informations spécifiques à votre structure de projet.
Modification des fichiers CMakeLists.txt
Pour modifier un fichier CMakeLists.txt
, cliquez avec le bouton droit sur le fichier dans l’Explorateur de solutions et choisissez Ouvrir. Si vous modifiez le fichier, une barre d’état jaune s’affiche pour vous informer qu’IntelliSense va effectuer la mise à jour. Cela vous donne la possibilité d’annuler l’opération de mise à jour. Pour plus d’informations sur CMakeLists.txt
, consultez la Documentation CMake.
Il contient le projet de lignes (hello-cmake), add_subdirectory (tests), add_executable (hello hello.cpp) et l’installation (TARGETS hello DESTINATION hello/bin). Un message en haut de la fenêtre indique que les informations IntelliSense C++ s’actualisent une fois que C Make termine la génération du cache.
Dès que vous enregistrez le fichier, l’étape de configuration s’exécute à nouveau automatiquement et affiche les informations dans la fenêtre Sortie. Les erreurs et les avertissements sont affichés dans la Liste des erreurs ou la fenêtre Sortie. Double-cliquez sur une erreur dans la Liste des erreurs pour accéder à la ligne concernée dans CMakeLists.txt
.
Un message d’erreur A C Make à la ligne 3 de CMakeLists.txt est mis en surbrillance. Les détails sont que C Make n’a pas trouvé de fichier de configuration de package fourni par sqlite3. C Make l’a cherché dans CMAKE_MODULE_PATH, mais n’a pas pu le trouver. La suggestion consiste à ajouter le préfixe d’installation « sqlite3 » à CMAKE_PREFIX_PATH ou à définir sqlite3_DIR à un répertoire contenant sqlite3Config.cmake et/ou sqlitet3-config.cmake.
Services de langage pour CMake
Les services de langage pour CMake sont disponibles dans Visual Studio 2019 version 16.5 ou ultérieure. Il prend en charge les fonctionnalités de navigation de code telles que Atteindre la définition, Faire un Peek de la Définition et Trouver toutes les références pour les variables, fonctions et cibles CMake dans les fichiers de script CMake. Pour plus d’informations, consultez Navigation de code pour les scripts CMake.
Les résultats de l’emplacement où SUPERTUX_SOURCES_CXX sont trouvés sont affichés. Par exemple, dans liste(SORT SSUPERTUX_SOURCES_CXX), fichier(GLOB SUPERTUX_SOURCES_CXX), etc.
Manipulation du projet CMake
La manipulation de projet CMake est disponible dans Visual Studio 2019 version 16.5 ou ultérieure. La manipulation de projet vous permet d’ajouter, de supprimer et de renommer des fichiers sources et des cibles dans votre projet CMake sans modifier manuellement vos scripts CMake. Quand vous ajoutez ou supprimez des fichiers de l’Explorateur de solutions, Visual Studio modifie automatiquement votre projet CMake. Il peut y avoir plusieurs endroits où il est judicieux d’ajouter ou de supprimer une référence à un script CMake. Si c’est le cas, Visual Studio vous demande où vous souhaitez apporter la modification et affiche un aperçu des modifications proposées. Pour obtenir des instructions pas à pas, consultez Ajouter, supprimer et renommer des fichiers et des cibles dans les projets CMake.
Une arborescence affiche CMakeLists.txt, sous laquelle il y a deux éléments : add_executable et défini. L’option Définie est cochée. La fenêtre d’aperçu indique où les modifications seront faites. L’ensemble de lignes (PROJECT_SRC « CmakeProject4.cpp » « CMakeProject4.h » affiche « Demo.cpp » mis en surbrillance avant la parenthèse fermante. Le bouton Appliquer accepte la modification, ou vous pouvez appuyer sur Annuler.
IntelliSense pour les projets CMake
Par défaut, Visual Studio utilise le mode IntelliSense qui correspond à l’architecture du compilateur et de la cible spécifiée par la configuration CMake active.
Si CMakePresets.json
est votre fichier de configuration CMake actif, vous pouvez spécifier des options IntelliSense à l’aide de intelliSenseMode
et de intelliSenseOptions
dans la carte de fournisseurs des paramètres Visual Studio. Pour plus d’informations, consultez la référence de carte des fournisseurs de paramètres Visual Studio.
Si CMakeSettings.json
est votre fichier de configuration CMake actif, vous pouvez spécifier des options IntelliSense à l’aide de intelliSenseMode
dans CMakeSettings.json
. Pour plus d’informations, consultez la référence CMakeSettings.json
.
Configurer IntelliSense avec des fichiers de chaîne d’outils CMake
Dans Visual Studio 2019 version 16.9 et ultérieure, Visual Studio configure automatiquement IntelliSense dans les projets CMake en fonction des variables CMake lorsque vous utilisez un fichier de chaîne d’outils CMake. Pour plus d’informations, consultez Configurer IntelliSense avec les fichiers de chaîne d’outils CMake.
Intégration Vcpkg
Les projets CMake ouverts dans Visual Studio s’intègrent à vcpkg, un gestionnaire de dépendances C/C++ multiplateforme. Avant d’utiliser vcpkg avec Visual Studio, vous devez exécuter vcpkg integrate install
. Pour obtenir des instructions et plus d’informations sur vcpkg, consultez :
Si CMakeSettings.json
est votre fichier de configuration actif, Visual Studio transmet automatiquement le fichier de chaîne d’outils vcpkg (vcpkg.cmake
) à CMake. Ce comportement est désactivé automatiquement lorsque vous spécifiez une autre chaîne d’outils dans votre configuration des paramètres CMake.
Si CMakePresets.json
est votre fichier de configuration actif, vous devez définir le chemin d’accès à vcpkg.cmake
dans CMakePresets.json
. Nous vous recommandons d’utiliser la variable d’environnement VCPKG_ROOT
au lieu d’un chemin absolu pour conserver le fichier partageable. Pour plus d’informations, consultez Activer l’intégration de vcpkg à CMake Presets. CMakePresets.json
est disponible dans Visual Studio 2019 version 16.10 ou ultérieure et il s’agit du fichier de configuration CMake recommandé.
Exécuter CMake à partir de la ligne de commande
Si CMakePresets.json
est votre fichier de configuration CMake actif, vous pouvez facilement reproduire vos générations locales en dehors de Visual Studio. Pour plus d’informations, consultez Exécuter CMake à partir de la ligne de commande ou d’un pipeline CI. CMakePresets.json
est pris en charge dans Visual Studio 2019 version 16.10 ou ultérieure et il s’agit du fichier de configuration CMake recommandé.
Si CMakeSettings.json
est votre fichier de configuration CMake actif, vous devez passer manuellement les arguments encodés dans votre fichier CMakeSettings.json
à CMake. Si vous avez installé CMake à partir de Visual Studio Installer, vous pouvez l’exécuter à partir de la ligne de commande en suivant les étapes suivantes :
Exécutez le fichier
vsdevcmd.bat
approprié (x86/x64). Pour plus d’informations, consultez Génération à partir de la ligne de commande.Revenez à votre dossier de sortie.
Exécutez CMake pour générer ou configurer votre application.
Visual Studio 2017 introduit une prise en charge enrichie de CMake, notamment des projets CMake multiplateformes. Le composant Outils Visual C++ pour CMake utilise la fonctionnalité Dossier ouvert pour activer l’IDE, afin de consommer des fichiers projet CMake (comme CMakeLists.txt
) directement pour IntelliSense et la navigation. Les générateurs Ninja et Visual Studio sont pris en charge. Si vous utilisez un générateur Visual Studio, il génère un fichier projet temporaire et le transmet à MSBuild. Toutefois, le projet n’est jamais chargé à des fins de navigation ou IntelliSense. Vous pouvez également importer un cache CMake existant.
Installation
Outils Visual C++ pour CMake est installé dans le cadre du développement Desktop avec C++ et du développement Linux avec des charges de travail C++.
Pour plus d’informations, consultez Installer la charge de travail Linux C++ dans Visual Studio.
Intégration de l’IDE
Lorsque vous choisissez Fichier > Ouvrir > Dossier pour ouvrir un dossier contenant un fichier CMakeLists.txt
, voici ce qui se passe :
Visual Studio ajoute un élément de menu CMake au menu principal, avec des commandes pour voir et modifier les scripts CMake.
L’Explorateur de solutions affiche la structure de dossiers et les fichiers.
Visual Studio exécute CMake et génère éventuellement le cache CMake pour la configuration par défaut, à savoir x86 Debug. La ligne de commande CMake s’affiche dans la Fenêtre Sortie, ainsi que l’autre sortie de CMake.
En arrière-plan, Visual Studio démarre pour indexer les fichiers sources afin d’activer IntelliSense, les informations de navigation, la refactorisation et ainsi de suite. Pendant que vous travaillez, Visual Studio surveille les changements dans l’éditeur et sur le disque pour synchroniser son index avec les sources.
Vous pouvez ouvrir des dossiers avec un nombre quelconque de projets CMake. Visual Studio détecte et configure tous les fichiers « racines » CMakeLists.txt
dans votre espace de travail. Les opérations CMake (configurer, générer, déboguer), les opérations C++ IntelliSense et de navigation sont disponibles pour tous les projets CMake dans votre espace de travail.
Les fichiers et dossiers d’un projet CMake sont visibles. Il y a un sous-répertoire de tests, CMakeLists.txt et hello.cpp. Il y a un dossier hello-cmake-vcpkg qui contient CMakeLists.txt, CMakeSettings.json et hello.cpp.
Vous pouvez également voir vos projets organisées logiquement par cibles. Choisissez Targets view (Affichage des cibles) dans la liste déroulante dans la barre d’outils de l’Explorateur de solutions :
Visual Studio utilise un fichier appelé CMakeSettings.json
pour stocker des variables d’environnement ou options de ligne de commande pour CMake. CMakeSettings.json
vous permet également de définir et stocker plusieurs configurations de build CMake. Vous pouvez facilement basculer entre eux dans l’IDE.
Sinon, utilisez le fichier CMakeLists.txt
comme vous le feriez dans un projet CMake pour spécifier des fichiers sources, rechercher des bibliothèques, définir des options du compilateur et de l’éditeur de liens, puis spécifier d’autres informations liées au système de génération.
Si vous avez besoin passer des arguments à un exécutable au moment du débogage, vous pouvez utiliser un autre fichier appelé launch.vs.json
. Dans certains scénarios, Visual Studio génère automatiquement ces fichiers. Vous pouvez les modifier manuellement ou même créer le fichier vous-même.
Remarque
Pour d’autres types de projets Dossier ouvert, deux fichiers JSON supplémentaires sont utilisés : CppProperties.json
et tasks.vs.json
. Aucun des deux n’est pertinent pour les projets CMake.
Importer un cache existant
Quand vous importez un fichier CMakeCache.txt
existant, Visual Studio extrait automatiquement des variables personnalisées pour créer un fichier CMakeSettings.json
prérempli. Le cache d’origine n’est pas modifié d’une manière quelconque. Il peut toujours être utilisé à partir de la ligne de commande, ou avec l’outil ou l’IDE utilisé pour le générer. Le nouveau fichier CMakeSettings.json
est placé avec la racine du projet CMakeLists.txt
. Visual Studio génère un nouveau cache en fonction du fichier de paramètres. Vous pouvez remplacer la génération automatique du cache dans la boîte de dialogue Outils > Options > CMake > Général.
Le contenu du cache n’est pas importé en totalité. Des propriétés comme le générateur et l’emplacement des compilateurs sont remplacées par les valeurs par défaut qui fonctionnent avec l’IDE.
Pour importer un cache existant
Dans le menu principal, choisissez Fichier > Ouvrir > CMake :
Cette commande affiche l’Assistant Importer CMake à partir de l’Assistant Cache .
Accédez au fichier
CMakeCache.txt
que vous souhaitez importer, puis choisissez OK. L’Assistant Importer un projet CMake à partir du cache apparaît :Une fois l’Assistant terminé, vous pouvez voir le nouveau fichier
CMakeCache.txt
dans l’Explorateur de solutions en regard du fichier de racineCMakeLists.txt
dans votre projet.
Génération de projets CMake
Pour générer un projet CMake, vous avez ces possibilités :
Dans la barre d’outils Général, recherchez la liste déroulante Configurations. Elle affiche probablement « Linux-Debug » ou « x64-Debug » par défaut. Sélectionnez la configuration préférée, puis appuyez sur F5 ou choisissez le bouton Exécuter (triangle vert) dans la barre d’outils. Le projet est d’abord généré automatiquement, comme une solution Visual Studio.
Cliquez avec le bouton droit sur
CMakeLists.txt
dans Explorateur de solutions, puis sélectionnez Générer dans le menu contextuel. Si vous avez plusieurs cibles dans votre structure de dossiers, vous pouvez choisir de générer toutes les cibles ou une seule cible spécifique.Dans le menu principal, sélectionnez Générer > Générer la solution (F7 ou Ctrl+Shift+B). Vérifiez qu’une cible CMake est déjà sélectionnée dans la liste déroulante Élément de démarrage dans la barre d’outils Général.
Le menu comporte des options telles que Ajouter, Ouvrir, Configurer des tâches, Générer, Nettoyer tout, etc.
Vous pouvez personnaliser les configurations de génération, les variables d’environnement, les arguments de ligne de commande et d’autres paramètres dans le fichier CMakeSettings.json
. Cela vous permet d’apporter des modifications sans modifier le fichier CMakeLists.txt
. Pour plus d’informations, consultez Personnaliser les paramètres CMake.
Comme attendu, les résultats de génération sont affichés dans la fenêtre sortie et la Liste des erreurs.
Les avertissements de génération CMake concernant les conversions qui peuvent entraîner une perte de données, comme la conversion d’un flottant en entier, sont visibles.
Dans un dossier avec plusieurs cibles de génération, vous pouvez spécifier la cible CMake à générer : choisissez l’élément Générer dans le menu CMake ou le menu contextuel CMakeLists.txt
pour spécifier la cible. Si vous entrez Ctrl + Maj + B dans un projet CMake, le document actif est généré.
Débogage de projets CMake
Pour déboguer un projet CMake, choisissez la configuration préférée et appuyez sur F5. Vous pouvez également appuyer sur le bouton Exécuter dans la barre d’outils. Si le bouton Exécuter indique « Sélectionner un élément de démarrage », sélectionnez la flèche déroulante et choisissez la cible à exécuter. (Dans un projet CMake, l’option « Document actif » est uniquement valide pour les fichiers .cpp.)
Les commandes Exécuter ou F5 génèrent d’abord le projet si des modifications ont été apportées depuis la dernière génération.
Vous pouvez personnaliser une session de débogage CMake en définissant des propriétés dans le fichier launch.vs.json
. Pour plus d’informations, consultez Configurer des sessions de débogage CMake.
Modification des fichiers CMakeLists.txt
Pour modifier un fichier CMakeLists.txt
, cliquez avec le bouton droit sur le fichier dans l’Explorateur de solutions et choisissez Ouvrir. Si vous modifiez le fichier, une barre d’état jaune s’affiche pour vous informer qu’IntelliSense va effectuer la mise à jour. Cela vous donne la possibilité d’annuler l’opération de mise à jour. Pour plus d’informations sur CMakeLists.txt
, consultez la Documentation CMake.
Le fichier contient : projet (hello-cmake), add_subdirectory (tests), add_executable (hello hello.cpp) et l’installation (TARGETS hello DESTINATION hello/bin). Un message en haut de la fenêtre indique que les informations IntelliSense C++ s’actualisent une fois que C Make termine la génération du cache.
Dès que vous enregistrez le fichier, l’étape de configuration s’exécute à nouveau automatiquement et affiche les informations dans la fenêtre Sortie. Les erreurs et les avertissements sont affichés dans la Liste des erreurs ou la fenêtre Sortie. Double-cliquez sur une erreur dans la Liste des erreurs pour accéder à la ligne concernée dans CMakeLists.txt
.
Un message d’erreur A C Make à la ligne 3 de CMakeLists.txt est mis en surbrillance. Les détails sont que C Make ne peut pas trouver de fichier de configuration de package fourni par sqlite3. C Make l’a cherché dans CMAKE_MODULE_PATH, mais n’a pas pu le trouver. La suggestion consiste à ajouter le préfixe d’installation « sqlite3 » à CMAKE_PREFIX_PATH ou à définir sqlite3_DIR à un répertoire contenant sqlite3Config.cmake et/ou sqlitet3-config.cmake.
Étape de configuration CMake
Quand des changements importants sont apportés aux fichiers CMakeSettings.json
ou CMakeLists.txt
, Visual Studio réexécute automatiquement l’étape de configuration CMake. Si l’étape de configuration se termine sans erreur, les informations qui sont collectées sont dans C++ IntelliSense et les services de langage. Elles sont également utilisées dans les opérations de génération et de débogage.
Plusieurs projets CMake peuvent utiliser le même nom de configuration CMake (par exemple, x86-Debug). Toutes sont configurées et générées (dans leur propre dossier racine de build) lorsque cette configuration est sélectionnée. Vous pouvez déboguer les cibles de tous les projets CMake qui participent à cette configuration CMake.
Le menu contextuel montre ce qui peut être intégré dans ce cas hello-cmake-a \ hello-cmake.exe (projet hello-cmake) et hello-cmake-b\hello-cmake.exe (projet hello-cmake). Ce dernier est mis en surbrillance.
Vous pouvez limiter les générations et les sessions de débogage à un sous-ensemble des projets dans l’espace de travail. Créez une configuration avec un nom unique dans le fichier CMakeSettings.json
. Ensuite, appliquez la configuration à ces projets uniquement. Lorsque cette configuration est sélectionnée, IntelliSense et les commandes de génération et de débogage s’appliquent uniquement à ces projets spécifiés.
Résolution des erreurs de cache CMake
Si vous avez besoin de plus d’informations sur l’état du cache CMake pour diagnostiquer un problème, ouvrez le menu principal de CMake ou le menu contextuel CMakeLists.txt
dans l’Explorateur de solutions pour exécuter l’une des commandes suivantes :
Afficher le cache ouvre le fichier
CMakeCache.txt
à partir du dossier racine de build dans l’éditeur. (Toutes les modifications que vous apportez ici àCMakeCache.txt
sont effacées si vous nettoyez le cache. Pour apporter des modifications persistantes après le nettoyage du cache, consultez Personnaliser les paramètres CMake.)Ouvrir le dossier de cache ouvre une fenêtre de l’Explorateur dans le dossier racine de build.
Nettoyer le cache supprime le dossier racine de build pour que la prochaine étape de configuration CMake démarre à partir d’un cache propre.
Générer le cache force l’exécution de l’étape de génération même si Visual Studio considère l’environnement comme étant à jour.
La génération automatique du cache peut être désactivée dans la boîte de dialogue Outils > Options > CMake > Général.
Compilation de fichier unique
Pour générer un fichier unique dans un projet CMake, cliquez avec le bouton droit sur le fichier dans l’Explorateur de solutions. Choisissez Compiler dans le menu contextuel. Vous pouvez également générer le fichier actuellement ouvert dans l’éditeur à l’aide du menu CMake principal :
Exécuter CMake à partir de la ligne de commande
Si vous avez installé CMake à partir de Visual Studio Installer, vous pouvez l’exécuter à partir de la ligne de commande en suivant les étapes suivantes :
Exécutez le fichier
vsdevcmd.bat
approprié (x86/x64). Pour plus d’informations, consultez Génération à partir de la ligne de commande.Revenez à votre dossier de sortie.
Exécutez CMake pour générer ou configurer votre application.
Dans Visual Studio 2015, les utilisateurs de Visual Studio peuvent utiliser un générateur CMake pour générer des fichiers projet MSBuild, consommés ensuite par l’IDE pour IntelliSense, la navigation et la compilation.
Voir aussi
Tutoriel : Créer des projets multiplateformes C++ dans Visual Studio
Configurer un projet CMake Linux
Se connecter à un ordinateur Linux distant
Personnaliser les paramètres de génération CMake
CMakeSettings.json
Informations de référence sur le schéma
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
vcpkg dans les projets CMake
Installer et utiliser des packages avec CMake dans Visual Studio