65 votes

VC2010 C ++ - organisation des fichiers source

J'ai eu quelques questions sur la façon d'organiser les fichiers source dans un VC 2010 projet C++. Les filtres par défaut qui sont inclus ne sera pas suffisant car en fin de compte, je vais avoir beaucoup de .rpc et .php les fichiers, donc il va ot être salissant. Je voudrais créer un dossier à la racine du projet appelé "source", puis créer des dossiers à l'intérieur de "la source" pour les différents catégories de fichiers que je voudrais utiliser. Quand je clic droit sur la solution, je seulement obtenir la possibilité d'ajouter un filtre, et non un dossier. Je peux créer manuellement les dossiers dans l'explorateur windows, puis de les inclure, mais Alors je perds ma capacité à ajouter des filtres. Est-il un moyen d'ajouter de nouveaux dossiers (sans l'aide de l'explorateur windows), et d'utiliser des filtres?

En outre, est-il quelque chose de similaire à $(CURDIR) que je pourrais utiliser pour inclure le dossier du fichier source sans avoir besoin d'un chemin d'accès absolu?

Merci d'avance pour l'aide

155voto

librik Points 2256

Vous êtes un peu confus au sujet de la façon dont Visual Studio fonctionne avec les fichiers de C++, mais c'est OK, étant donné que la documentation est moche. Tout d'abord: à la différence avec le C# ou le Java, l'organisation des fichiers dans le projet n'a aucun rapport avec l'organisation des fichiers sur votre disque. Les fichiers et les dossiers ne sont pas "dans" le projet, vraiment; le projet ne répertorie que les noms et les chemins d'accès des fichiers et des dossiers, qui ont déjà présentes sur votre disque.

En général, vous créez la mise en page de dossiers avec les fichiers source à l'intérieur de ces dossiers. Vous faites cela en dehors de Visual Studio. Vous pouvez également créer un fichier de projet. Lorsque vous "ajouter un fichier" pour le projet, tout ce que vous faire est de dire le projet où trouver le fichier sur le disque.

Nous allons travailler sur un exemple et je vais vous montrer comment j'allais organiser. Supposons que vous effectuez une calculatrice graphique programme appelé SuperCalc. Vous aurez un dossier Source, puis de créer des dossiers à l'intérieur de la Source de tenir les différents fichiers. Supposons que les dossiers que vous créez sont:

  • SuperCalc\Source\Input
  • SuperCalc\Source\Math
  • SuperCalc\Source\Math\Matrix
  • SuperCalc\Source\Output

Vous avez 3 sous - Source: Input, Output, et Math. L' Math sous-répertoire a un sous-répertoire appelé Matrix. Vous aurez .rpc fichiers en Entrée, des Mathématiques, de la Matrice et de la Sortie. Vous allez créer ces répertoires (dossiers) à l'aide de l'Explorateur Windows ou l'Invite de Commande.

Maintenant, vous voulez créer un fichier de solution (SuperCalc.sln) et un fichier de projet (SuperCalc.vcxproj & SuperCalc.vcxproj.filters). Le faire à l'intérieur de Visual Studio. Habituellement, le fichier de projet de vie dans un sous-dossier de la solution d'annuaire; ceci sera fait automatiquement pour vous par Visual Studio. Choisissez un emplacement pour le solution fichier -- il doit être quelque part dans la structure de répertoire (dossier de l'arbre) que le code source. Je suggère de le mettre à côté du répertoire Source, dans:

  • SuperCalc\Build

Aller dans VS et choisissez File > New > Project > Visual Studio Solutions > Blank Solution File. Donner la solution d'un nom (peut-être "SuperCalc") et un lieu (l'endroit, nous avons juste pris dans l' SuperCalc\Build répertoire). Il va créer le fichier de solution pour vous.

Maintenant, cliquez-droit sur la solution dans l'Explorateur de solutions ("Solution SuperCalc, 0 projets"), et choisissez Add > New Project. Choisir un nom, tel sera le nom de votre programme exécutable, comme "SuperCalc"! Choisissez Win32, soit Win32 Console Application (c'est un DOS-programme de console) ou Win32 Projet (c'est un Windows ordinaire programme GUI). Habituellement je puis cliquez sur Paramètres de l'Application à faire quelques changements importants: d'une part, je prends Projet Vide parce que je ne veux pas Visual Studio de création de fichiers et de code pour moi, sauf si je lui dis de. Lorsqu'il est configuré de la façon dont je le veux, je clique sur TERMINER.

Maintenant vous avez votre fichier de solution et le projet, créé par Visual Studio. Vous avez également à votre code source, ou au moins la structure de répertoire (dossier de l'arbre) où votre code source sera, créé en dehors de Visual Studio. Il est temps de relier ces deux choses ensemble.

Si vous le vouliez, vous pourriez obtenir la liste des fichiers source dans les Fichiers Source de filtre de votre projet. Même si ils viennent de différents répertoires (Entrée, Matrix, etc.), il n'y a pas de lien nécessaire entre les emplacements des fichiers sur le disque et leur apparition dans le projet. Mais si vous avez beaucoup de fichiers, il est plus facile si vous créer des "sous-filtres, filtres à l'intérieur de la Source des Fichiers du filtre, et de leur donner les noms des sous-dossiers de la Source. De cette façon, vous répliquer la structure de votre disque répertoires à l'intérieur de votre fichier de projet.

Cliquez-droit sur les Fichiers Source de filtre de la "SuperCalc" du projet, et choisissez Ajouter > Ajouter un Nouveau Filtre. Donnez-lui le nom Input (la première de la SuperCalc\répertoires Source). Également créer des filtres Math et Output. Cliquez-droit sur l' Math filtre et choisissez Ajouter > Ajouter un Nouveau Filtre, afin de créer un sous-filtre appelé" Matrix (à l'intérieur de Math). Maintenant que vous avez ces filtres:

SuperCalc
 Les Fichiers Source
Entrée
Mathématiques
La matrice
Sortie

ce qui correspond à la des répertoires (dossiers) que vous avez créé plus tôt. C'est purement une disposition confortable pour les humains. Visual Studio n'est pas à comprendre quelque chose de spécial à ce sujet. Si vous venez de dire VS "ajouter un fichier" cela ne peut pas mettre le fichier dans le bon filtre. Vous aurez à lui dire où le mettre.

Pour ajouter ou créer votre .rpc fichiers, sélectionnez le nom du filtre correspondant au répertoire où le .fichier cpp. Donc, d'ajouter ou de créer un fichier SuperCalc\Source\Math\Matrix\matrix_multiply.cpp, cliquez-droit sur l' Matrix filtre dans l'Explorateur de solutions et choisissez Ajouter > Ajouter un Nouveau Fichier ou Ajouter un Fichier Existant. (Ajouter un Fichier Existant est pour quand vous avez déjà écrit matrix_multiply.cpp et vous voulez juste pour dire que le projet où c'est). Utilisez la boîte de dialogue pour naviguer jusqu'à l' Source\Math\Matrix répertoire. Répétez ce processus pour tous les fichiers source dans l'ensemble de votre programme.

Vous avez aussi eu la question "est-il quelque chose de similaire à $(CURDIR) que je pourrais utiliser pour inclure le dossier du fichier source sans avoir besoin d'un chemin d'accès absolu?" Vous avez de la chance: des projets Visual Studio ne pas utiliser des chemins absolus! Ils utiliser des chemins relatifs. Le fichier de projet stocke le chemin d'accès relatif requis pour obtenir à partir du répertoire contenant le .vcxproj fichier dans le répertoire contenant le fichier source. Donc, si vous avez créé SuperCalc.sln et SuperCalc.vcxproj où je l'ai suggéré ( SuperCalc\Build répertoire), et vous ajoutez votre .fichiers cpp à la source des sous-répertoires, vous pouvez aller regarder à l'intérieur de la SuperCalc.vcxproj fichier à l'aide du bloc-notes, et vous verrez des lignes comme:

<ClCompile Inclure="..\..\..\Source\Math\Matrix\matrix_multiply.cpp" />

Depuis il n'y a pas de chemins d'accès absolus, vous pourriez prendre l'ensemble de la SuperCalc arborescence de répertoires et de déplacer quelque part d'autre, et il en aurait encore du travail. Pas besoin de la variable d'environnement hacks comme $(CURDIR).

Une dernière chose à savoir: depuis vous de mettre vos fichiers dans plusieurs répertoires, vous pourriez avoir des problèmes avec #includeing en-têtes, les .h ou .php les fichiers. Vous devez indiquer au compilateur les répertoires où vos fichiers d'en-tête sont situés. Ils seront probablement dispersées entre plusieurs répertoires. Afin de modifier les paramètres du projet: cliquez-droit sur le nom du projet dans l'Explorateur de solutions, sélectionnez Propriétés, et de forage vers le bas dans les Propriétés de Configuration > C/C++ > Général. Le premier champ dans la feuille de propriétés, dit "d'autres Répertoires include". Avant de faire quoi que ce soit d'autre, cliquez sur le menu déroulant Configuration et choisissez Toutes les Configurations. Si vous avez à la fois 32 bits et 64 bits, cliquez sur la Plate-forme de menu déroulant et choisissez Toutes les plates-formes. Maintenant, allez dans les "Autres Répertoires include" et ajoutez tous les chemins d'accès à tous les répertoires source, avec les chemins spécifiés par rapport au projet de répertoire du fichier. Donc, pour le SuperCalc exemple, il devrait ressembler à:

..\..\..\Source\Input;..\..\..\Source\Math;..\..\..\Source\Math\Matrice;..\..\..\Source\Sortie

Une fois cette modification effectuée, un fichier comme Source\Math\Matrix\matrix_multiply.cpp peut avoir un ligne

#include "input_configuration.hpp"

pour #include d'un fichier à partir du répertoire d'Entrée, et il sera Tout Simplement Travailler.

(Si ce n'est pas Seulement le Travail, l'approche habituelle consiste à aller dans les Propriétés du Projet et jouer avec le nombre d' ..\ des séquences en face de vos autres Répertoires include. Rappelez-vous que chaque fois que vous aller faire un changement, vous devez choisir Toutes les Configurations de nouveau, sinon vos modifications ne s'appliquent qu'à la Configuration actuelle (Debug ou Release). Ce paramètre est non collante.)

23voto

morgancodes Points 8569

Il EST effectivement possible de voir (et manipuler) la physique de la structure du fichier via Visual Studio, comme décrit dans ce post DONC:

En-tête/fichier Source n'est pas une exigence imposée par Visual Studio. C'est juste la mise en page par défaut, et c'est virtuel, et non pas physique. Si vous cliquez sur "Afficher tous les fichiers" dans l'explorateur de solutions, il va montrer l' arborescence de dossiers qu'il est sur le disque dur, que vous pouvez manipuler comme vous voyez l'ajustement.

-3voto

Casey Points 49

Si vous souhaitez créer votre solution et votre projet dans un emplacement différent de votre code source, vous pouvez modifier votre répertoire de travail:

Project > Properties > Configuration Properties > Debugging > Working Directory

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X