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

C++ Discussion :

Détection du système utilisé


Sujet :

C++

  1. #1
    Membre régulier
    Inscrit en
    Janvier 2004
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 8
    Par défaut Détection du système utilisé
    Bonjour à tous,

    pour un projet école, j'ai besoin de savoir au cours de l'éxécution sur quel système tourne mon logiciel.
    En particulier, je dois savoir si le système en cours est Solaris ou Linux.

    Plus précisément, certains traitements de mon logiciel dépendent du système (lecture de mémoires partagées). Pour implémenter cette dépendance du système, je souhaites utiliser le design pattern Fabrique Abstraite. Et pour choisir ma fabrique concrète, je dois donc connaître le système.

    J'ai trouvé dans les forums quelque chose de ce type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    #ifdef WIN32 // Windows 
     
    #else // le reste, UNIX en particulier 
     
    #endif
    Pourriez-vous m'aider pour trouver une solution viable ?
    Merci d'avance !

  2. #2
    Membre confirmé Avatar de BigNic
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 195
    Par défaut
    dans ma boite on utilise ça aussi.
    L'avantage est que selon ton système tu ne compiles que le code utile.
    L'incovénient est que tes sources deviennent vite illisible.
    Sinon sa fonctionne comme tu l'as dit.
    On utilise des define construit automatiquement dans le makefile.
    exemple dans le makfile:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    # detection automatique de la version de solaris
    #detection de la version de solaris
    OS:=sh = echo 'uname'
     
    #plus tard dans le makefile
    DEFINE=-DOS
    et plus tard dans le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    #if OS==Linux
     
    /* mon code linux */
     
    #else
        #if OS==SunOS
        /* mon code solaris*/
        #else /* on oublie AIX et VMS, il reste plus que NT */
        #endif
    #endif
    pour ton define WIN32 je pense que visual le fait de base inutile de l'ajouté. Vérifie tout de même car Windows je ne pratique que très rarement.

  3. #3
    Membre émérite
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Février 2004
    Messages
    644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant ERP

    Informations forums :
    Inscription : Février 2004
    Messages : 644
    Par défaut
    Pourquoi ne pas créer des sources qui seraient propres à chaque architectures/plateforme.

    Par exemple :
    src/
    - win32
    - linux
    - bsd

    etc... ?

  4. #4
    Membre émérite Avatar de reggae
    Profil pro
    Inscrit en
    Août 2005
    Messages
    773
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2005
    Messages : 773
    Par défaut
    Voir même d'appeler un fichier source en fonction de l'OS présent...

  5. #5
    Membre émérite
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Février 2004
    Messages
    644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant ERP

    Informations forums :
    Inscription : Février 2004
    Messages : 644
    Par défaut
    C'est le but des sous-répertoires.

    Placer en commun le code qui n'a pas besoin d'une spécialisation.

    Par contre, harmoniser le code spécifique. Voir tout simplement le fonctionnement de QT, et d'autres librairies bas-niveau qui ont besoin de s'interfacer correctement avec l'OS.

  6. #6
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 296
    Par défaut
    Solaris ou Linux, c'est très réducteur. Voir la flanquée de tests réalisés par les autotools (configure en particulier).
    Dans la pratique, on va d'abord préférer dans la mesure du possible l'utilisation de bibliothèques haut niveau efficaces -- ACE, boost, QT, ... J'ai rarement besoin de tester personnellement les plateformes cible. D'autres bibliothèques le faisant pour moi.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  7. #7
    Membre émérite
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Février 2004
    Messages
    644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant ERP

    Informations forums :
    Inscription : Février 2004
    Messages : 644
    Par défaut
    C'est comme cela que je pratique, mais pour les applications systems ou qui sont très très proche de l'OS, y a une autre façon de voir les choses.

    Mais il est vrai que Qt, WxWidget, Boost, ACE, etc... limitent beaucoup l'utilisation de #ifdef __OS__

  8. #8
    Membre régulier
    Inscrit en
    Janvier 2004
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 8
    Par défaut
    Merci beaucoup pour vos réponses.
    Je crois que je vais retenir la solution de BigNic qui convient parfaitement à mon problème.
    Je ne peux pas utiliser d'outils ou de bibliothèques particulières pour mon projet, mon application doit tourner sur des vieilles machines Solaris qui ont 1000 ans, et en utilisant un espèce de "C-C++" avec seulement des bibliothèques de base (et je vous raconte pas la base).
    L'avantage de la Fabrique Abstraite est que le logiciel reconnait le système au cours de l'éxécution, et utilise les classes qui conviennent.
    Ainsi, je n'ai à modifier ni mes sources ni mon makefile pour compiler sous les 2 OS. De plus, je minimise le code à modifier / ajouter pour gérer d'autres systèmes par exemple.

  9. #9
    Membre émérite
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Février 2004
    Messages
    644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant ERP

    Informations forums :
    Inscription : Février 2004
    Messages : 644
    Par défaut
    Euh oui et non,

    De toute façon, ton code sera intégré totallement dans ton binaire, ce qui va le gonfler.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Détection du système d'exploitation en JAVA
    Par borri123 dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 06/02/2013, 11h58
  2. [CS5] Détection du système d'exploitation
    Par clement610 dans le forum Flash
    Réponses: 0
    Dernier message: 19/11/2010, 17h05
  3. [SP-2007] Dans un workflow, détection du Navigateur utilisé
    Par PORTES dans le forum SharePoint
    Réponses: 0
    Dernier message: 23/10/2009, 13h42
  4. Détection de système d'exploitation avec SWT
    Par villoutj dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 02/10/2009, 09h13
  5. Réponses: 2
    Dernier message: 27/02/2008, 15h03

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