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

  1. #1
    Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 66
    Points : 50
    Points
    50
    Par défaut Linux : recuperer le repertoire d'installation de mon application pour lecture de fichiers de configuration
    Bonjour,

    je viens de finir une version de mon logiciel et il charge via Qt des images qui se trouve dans un repertoire image.

    Tout se passe bien suite a une execution apres la compilation classique mais maintenant je souhaiterais generer une package rpm (pour le moment mais je veux aussi le generer pour debian/ubuntu).
    La generation et l'installation se passent bien mais lors que je lance mon application les images ne sont plus trouvees.

    C'est normal car le chemin de recherche est ./ alors que l'installation a ete faite dans /usr/monlogiciel (il pourrait aussi etre fait dans /usr/local/monlogiciel).

    Bref existe-t-il un moyen de retrouver ce repertoire simplement (via Qt ou tout autre moyen)?

    Sous windows tout se passe bien car il fait comme si il lancait le logiciel de puis le repertoire d'installation ce qui facilite bien les choses pour une fois...

    Merci de vos reponses
    L'elfe d'azur

  2. #2
    Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 66
    Points : 50
    Points
    50
    Par défaut
    J'ai une premiere solution en utilisant :
    QCoreApplication::applicationDirPath();

    Ca fonctionne mais je dois ajouter sous linux "../monlogiciel" pour me retrouver dans le bon repertoire... s'il y a moyen de faire plus propre, ca m'interesse sinon je resterai avec cette methode.

    Merci,
    L'elfe d'azur

  3. #3
    Membre expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Points : 3 156
    Points
    3 156
    Par défaut
    Hello

    Sous windows, la convention est de tout mettre dans le répertoire d'installation du logiciel.

    Sous Linux, c'est un peu différent, on range plutôt les différents fichiers selon leur nature. /usr/bin pour les exécutables, /usr/lib pour les bibliothèques partagées, /usr/lib/monlogiciel pour les ressources privées du soft, /usr/share/monlogiciel pour les ressources publiques, /etc pour les fichiers de configuration, etc. Bien qu'aucune règle ne soit totalement forcée et que tu puisses choisir la formule que tu veux, respecter les conventions facilite les choses en général. Tout ça pour dire que s'adapter à l'OS sur lequel tu livres peut s'avérer plus compliqué que simplement trouver où il s'exécute.

    Mon conseil: Dans ta version Linux, utilise un chemin absolu en dur ou bien récupéré dans un fichier de configuration. Tu peux rester en iso code côté C++ et déporter les différences propre à chaque OS dans un fichier de config dont tu feras une version par OS. Cela te permet en plus de faire des tests de config sans tout recompiler. Ainsi, l'usage de ton exécutable restera valide quelle que soit l'endroit et la manière dont on l'appelle, y compris si c'est au travers d'un lien symbolique (ce qui est fort courant sur Linux).
    Find me on github

Discussions similaires

  1. Réponses: 2
    Dernier message: 27/03/2011, 12h41
  2. installation de mon application sur un poste
    Par issam16 dans le forum Access
    Réponses: 6
    Dernier message: 08/08/2006, 17h15
  3. Réponses: 1
    Dernier message: 09/06/2006, 09h43
  4. Réponses: 16
    Dernier message: 16/05/2006, 12h37
  5. Réponses: 4
    Dernier message: 19/05/2005, 16h11

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