Question: Si j'ai deux fichiers avec le même nom (mais dans des répertoires différents), il apparaît que seulement Visual Studio 2005 peut gérer cela de manière transparente?? VS 2008 et 2010 besoin d'un tas de peaufinage? À part ma convention de nommage, suis-je en train de faire quelque chose de mal?
Arrière-plan:
Je suis en développement C++ statistiques des bibliothèques... j'ai deux dossiers:
/ Univariate
Normal.cpp
Normal.h
Beta.cpp
Beta.h
Adaptive.cpp
Adaptive.h
/ Multivariate
Normal.cpp
Normal.h
Beta.cpp
Beta.h
Adaptive.cpp
Adaptive.h
J'ai besoin de l'appui de la croix de compilation -- j'utilise g++/make pour compiler ces mêmes fichiers dans une bibliothèque dans Linux. Ils fonctionnent très bien.
J'avais été à l'aide de Visual Studio 2005, sans problème, mais j'ai besoin de mettre à niveau vers Visual Studio 2008 ou 2010 (actuellement baver sur nVidia nsight outil). Cependant, je vais avoir des ennuis si je ajouter des fichiers à un projet avec le même nom (même si ils sont dans un autre répertoire). Je suis prêt à changer ma convention de nommage, mais je suis curieux de savoir si d'autres personnes ont rencontré ce problème et ont trouvé tout bien documentée des solutions??
Je suis encore ahuri par le fait que si je mettre à niveau à partir de 2005, des projets à projets 2010, il semble que VS 2010 est en mesure de gérer correctement les deux fichiers avec le même nom dans des répertoires différents; cependant, si je supprime l'un des fichiers en double, puis l'ajouter au projet, je suis accueilli par le message d'avertissement suivant:
Les Distributions\Release\Adaptative.obj : avertissement LNK4042: objet spécifié plus d'une fois; extras ignoré
Maintenant, j'ai l'intermédiaire du répertoire spécifié par $(ProjectName)\$(Configuration) -- j'ai besoin d'avoir mes fichiers objets dans un endroit différent de mon arbre source. Donc, je peux voir pourquoi il est de la copie des fichiers de l'objet sur le dessus les uns des autres, mais quand les projets sont convertis à partir de 2005 à 2008 ou 2010, un groupe de mise en compile sont ajoutés:
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)%(Filename)1.obj</ObjectFileName>
<XMLDocumentationFileName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)%(Filename)1.xdc</XMLDocumentationFileName>
Ceux-ci sont accessibles à partir du fichier Source de la page de Propriétés en C/C++ -> Fichiers de Sortie - > Objet "Nom de Fichier" & "Documentation XML Nom de Fichier". Mais si j'ajoute simplement le fichier directement (ou de les supprimer et de les rajouter), VS ne se plaint pas jusqu'à ce que j'essaie de compiler, mais aussi de ne jamais ajoute les directives conditionnelles -- Donc, pour que les choses fonctionnent correctement, j'ai du ajouter les directives conditionnelles moi-même pour chaque configuration. Suis-je fait une erreur ou mauvaise hypothèse ou j'ai découvert un valide bug dans VS 2008 / 2010?