IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

Visual C++ Discussion :

vcproj, File et RelativePath


Sujet :

Visual C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre chevronn� Avatar de Flo.
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    379
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations forums :
    Inscription : Mai 2002
    Messages : 379
    Par d�faut vcproj, File et RelativePath
    Bonjour,

    je travaille sous XP avec Visual Studio 2008 en C++ non manag�.

    Dans un vcproj, je souhaiterais que les chemins pour les .h et .cpp soit absolus et d�pendent d'une variable d'environnement LIBS. J'ai na�vement essay� de modifier le xml du .vcproj en introduisant ma variable d'environnement, mais sans succ�s :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    <File
           RelativePath="$(LIBS)\include\myfile1.h">
    </File>
    Dans la fen�tre "Propri�t�s" du fichier "myfile1.h" il m'affiche m�me pas la valeur de cette variable ; il laisse le $(LIBS). A noter que cette m�me variable est d�j� utilis�e pour les r�pertoires d'inclusion dans les propri�t�s du m�me projet et qu'elle est correctement remplac�e par sa valeur lors de la compilation. Donc la valeur de la variable est correctement r�cup�r�e par msvc. Mais visiblement, elle ne l'est pas � ce niveau l�.

    �videment, les propri�t�s "AbsolutePath" ou "FullPath" n'existent pas.

    Ces fichiers l� font partis d'un d�p�t CVS. Je ne veux pas les dupliquer dans mon projet. Je veux juste que mon projet pointe vers eux pour la compilation et que mes modifications b�n�ficient aux autres via CVS.

    Est-ce que c'est possible ?

    En esp�rant �tre clair ... Merci.

    Flo.

  2. #2
    Expert confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2005
    Messages
    5 504
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 5 504
    Par d�faut
    Je ne comprends pas votre probl�me.
    Est-ce dans la fen�tre propri�t� dans VS ?
    Est-ce lors de l'�dition des fichiers sources ?
    Est-ce lors de la compilation du projet ?

    La propagation des variables d'environnement est assez pi�geuse dans les scripts MSBUILD.
    Utilisez la m�thode System.Environment::GetEnvironmentVariables pour bien v�rifier leur valeurs lors de la compilation. http://msdn.microsoft.com/en-us/library/dd633440.aspx

    Je n'ai jamais �t� confront� � ce type de probl�me car je pense qu'il y a plusieurs gros probl�mes dans votre d�marche, d�sol�.

    1. La variable d'environnement est globale � l'utilisateur.
    C'est tr�s g�nant pour les personnes assign�es � plusieurs projets (comme les experts techniques ou les auditeurs) qui doivent jongler avec ces variables pour passer d'un projet � un autre. C'est aussi un gros probl�me dans le cas d'utilisation d'usine de build pour l'int�gration continue o� l'usine devra �tre configurer � chaque changement de projet et comme elle est sens� faire la compilation de tout les projets en environnement contr�l�, c'est tr�s mal barr�.
    -> Utilisez des propri�t�s de projet SVP

    2. Votre approche ne prend pas en compte les probl�matiques de versionning des composants externes. Chaque projet doit pouvoir choisir quel version des composants externes il utilise. Il faut pouvoir contr�ler la diff�rences de comportement induit par le changement de version d'un ou plusieurs composants externes, via les tests unitaires, donc pouvoir, pour un projet utilisateur donn�, avoir le contr�le sur la version de chaque composant externe.
    -> Utilisez des outils types NuGet SVP

    En un mot, rationalisez et industrialisez votre processus de compilation et vous n'aurez plus ce probl�mes, mais d'autres.
    Il faut faire de votre projet utilisateur de composant une "�le" qui contr�le les changements dans son environnement. Et l'utilisation syst�matique de chemins relatifs, qui peuvent sortir de l'arborescence du projet est une bonne solution. Vous pouvez vous sertir des outils d�di�s � la gestion des packagings pour automatiser et formaliser ces d�pendances.

  3. #3
    Membre chevronn� Avatar de Flo.
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    379
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations forums :
    Inscription : Mai 2002
    Messages : 379
    Par d�faut
    Merci pour votre r�ponse. Elle est compl�te. En revanche, elle ne m'aide pas dans le cas pr�sent.

    Ma question est la suivante : est-il possible de modifier le vcproj (sous notepad par exemple) de mani�re � que l'attribut XML "RelativePath" de la balise XML "File" fasse r�f�rence � une variable d'environnement ?

    Mes propres recherches sur la toile m'ont permis de constater que

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    <File
           RelativePath="$(LIBS)\include\myfile1.h">
    </File>
    ou encore

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    <File
           RelativePath="%LIBS%\include\myfile1.h">
    </File>
    ne fonctionnent pas.

    Je ne parviens pas � trouver sur le site de la msdn quelque chose de suffisament pr�cis � se sujet.

    Donc quelqu'un sait-il si cela est possible et comment le faire ? C'est tout. Je n'ai pas forc�ment envie de rentrer dans le d�tail de ma d�marche. Elle est ce qu'elle est avec ses propres variables d'environnement elle aussi.

    Merci

    Flo.

  4. #4
    R�dacteur/Mod�rateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 153
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 38
    Localisation : Canada

    Informations professionnelles :
    Activit� : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 153
    Billets dans le blog
    4
    Par d�faut
    Bonjour,

    je n'ai jamais test� cette manip', mais elle est s�rement risqu�e en plus d'�tre peu orthodoxe. Voire impossible.
    Visual a d�j� toute une flop�e de variables qui permettent ceci de fa�on fort simple. Ses propres variables d'environnement en somme.
    Il convient d'utiliser les variables $(ProjectDir) et $(SolutionDir) en particulier. Afin de s'assurer que la solution soit ind�pendante de la machine o� on la r�cup�re.
    Ces variables sont bien sur utilisables dans les include_path et lib_path.

    Toute autre variable d'environnement externe � Visual est � bannir. Si tent� qu'elles soient utilisables.

    Edit: � moins que le "probl�me" soit l'emplacement du fichier ?!
    Auquel cas, je ne crois pas Visual capable de chercher un fichier comme �a. Il faut une copie du fichier que l'on incluera dans le projet, il prendra automatiquement son chemin relatif.
    Et la "solution" � ce "probl�me" est : svn/git.
    Pensez � consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation r�seau ?
    Aucune aide via MP ne sera dispens�e. Merci d'utiliser les forums pr�vus � cet effet.

  5. #5
    Expert confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2005
    Messages
    5 504
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 5 504
    Par d�faut
    Je me rappelais plus que vcproj n'est pas un fichier MSBUILD mais un format tout pourri.

    Les solutions que vous trouverez sur le Net correspondent � des fichiers MSBUILD.

    Les variables d'environnements ne posent pas de probl�me dans des fichiers MSBUILD.

    Donc, convertissez vos fichiers vcproj en fichier MSBUILD (vcxproj sius VS2010 mais je pense que c'est la m�me chose en VS2008).

    Et comme vous le verrez sur le Net et comme je vous l'ai d�j� expliqu�, vous �tes en train de faire une usine � gaz pour rien.

  6. #6
    Membre Expert
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    D�cembre 2011
    Messages
    1 255
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : D�cembre 2011
    Messages : 1 255
    Par d�faut
    Citation Envoy� par Flo. Voir le message
    Je ne parviens pas � trouver sur le site de la msdn quelque chose de suffisament pr�cis � se sujet.
    Tu ne dois pas bien chercher, faut dire, quelle id�e d'appeler ce genre de variable : MACRO.
    J'ai trouv� �a. (pas s�re que ce soit la solution, mais c'est un d�but)

Discussions similaires

  1. R�ponses: 6
    Dernier message: 30/07/2003, 14h59
  2. passer FILE* en argument d une fonction
    Par Monsieur_Manu dans le forum C
    R�ponses: 9
    Dernier message: 10/04/2003, 17h56
  3. [File et Directory ListBox] Soucis de filtre
    Par Mercilius dans le forum Composants VCL
    R�ponses: 8
    Dernier message: 04/04/2003, 16h17
  4. A propos des 'File management Functions' de Windows
    Par znaidi dans le forum Windows
    R�ponses: 3
    Dernier message: 01/04/2003, 16h01
  5. recup�rer file d'attente d'impression
    Par magic corp. dans le forum Langage
    R�ponses: 2
    Dernier message: 25/09/2002, 14h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo