Bonjour à tous,
Ayant fait quelques petits programmes simples en c, compilés en ligne de commande avec mingw, je voulais me mettre à utiliser le compilateur et l'IDE natifs de windows afin de faire plus simplement des programmes fenêtrés (j'utilisais auparavant la SDL mais je voudrais avoir accès à plus de fonctionnalités que n'en expose l'API de la SDL et faire certaines choses moi-même en interagissant directement avec l'OS. C'est parti, j'installe donc visual studio 2022. Je pars d'un projet vide, je compose un programme minimal en m'aidant de msdn (winmain + windproc) et je teste : ça compile, youpi.
Hélas la joie aura été de courte durée car j'ai remarqué des bizarreries qui ont le don de m'agacer. J'ai essayé de faire quelques tests afin de comprendre ce qui se passait mais je pense que les habitués pourront m'apporter une aide précieuse dans cette quête.
1) Il semble que Visual Studio 2022 utilise en interne un système de contrôle de version (et ce _même_ si on désactive le contrôle de version dans les options). Car quand on ajoute des dossiers / fichiers manuellement dans le dossier du projet (pour ajouter les .h et .lib des bibliothèques qu'on veut utiliser, ils sont marqués d'une petite icône "moins" rouge dans l'explorateur de solution. En cliquant droit dessus on peut les ajouter ensuite manuellement au projet mais est-ce la méthode "correcte" pour ajouter des fichiers / dossiers de bibliothèques à un projet ? Il semble que copier-coller des dossiers / fichiers via l'explorateur (de windows) puis "valider" les fichiers via l'explorateur de solution soit la seule méthode à part recréer les dossiers "include" et "lib" etc de la bibiothèque téléchargée via l'explorateur de solution et importer un à un les fichiers contenus (!) -> Car l'explorateur de solution ne permet ni d'importer un dossier et son contenu ni plusieurs fichiers à la fois (!).
2) Question subsidiaire : si ce contrôle de version est bien intégré et non-désactivable, qu'est ce que ça change et comment doit-on faire "proprement" ces opérations ?
3) Une autre bizarrerie que j'ai remarqué : si mettons j'installe manuellement la SDL par exemple (que je compte utiliser uniquement pour l'affichage le temps d'apprendre une API de rendu). Donc je télécharge la version de dev pour visual studio de la SDL, je crée un dossier "dependencies" dans le dossier de mon projet via l'explorateur (de windows), puis un sous-dossier SDL2 et je copie colle les dossiers "include" et "lib" de la SDL dedans. J'actualise l'explorateur de solution de visual studio : mon dossier dependencies ajouté manuellement ainsi que son contenu apparaissent dans mon projet. Et c'est là que ça devient bizarre :
a) Si je n'ajoute aucun des fichiers ajoutés manuellement au projet, je dois ajouter les dossiers "include" et "lib" aux réglages du compilateur et de l'éditeur de lien, et je dois ajouter la liaison aux deux bibliothèques SDL2.lib et SDL2main.lib pour compiler (normal).
b) Mais si j'ajoute au projet les fichiers ajoutés manuellement au dossier du projet via l'explorateur de solution, alors je n'ai besoin d'ajouter aucun "dossier include" et aucun "dossier lib" dans les propriétés du projet, ni même d'ajouter la liaison aux deux bibliothèques SDL2.lib et SDL2main.lib. Cela compile, visual studio "trouve tout tout seul" (répertoires et .lib). Enfin il me semble bien. Est-ce qu'il scanne les fichiers pendant l'ajout au projet et le fait automatiquement en mode ninja ? Ce comportement "magique" que je ne comprends guère me laisse songeur. Parce que quand on sait pas comment un truc marche, on est pas sûr qu'il marche et dans quelle conditions il marche...
Tout éclaircissement serait le bienvenuMerci d'avoir pris le temps de me lire !
Partager