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 :

Makefile 2 systemes


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2004
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 60
    Par défaut Makefile 2 systemes
    Bonjour a tous,
    J'ai un programme que je voudrais faire marcher sous linux et sous sun, evideemment j'ai des procedures qui ne marchent que sur sun car utilisent des biblioteques de sun et d'autres qui ne marchent que sous linux utilisant les biblioteques de Linux. j'ai un Makefile qui permet de lancer le Programme soit sur linux ou sur sun, mais mon probleme est le suivant je ne voudrais pas dupliquer toutes les procedures en dehors de celles qui sont purement linux ou sun.
    on m'a propose une idee a savoir utilise ifdef que j'utilise comme suit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #ifdef Linux
    #include "aFDPR_l.h"
    #endif
     
    #ifdef Linux
    #include "aFDPR_s.h"
    #endif
    ce qui ne marche pas car j'obtient des erreurs du genre type incomplet

    en fait je voudrais que le compilateur reconnaisse a quel moment utiliser aFDPR_l pour linux ou aFDPR_s pour sun
    merci de me proposer des solutions

  2. #2
    Membre Expert
    Avatar de hiko-seijuro
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 011
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 011
    Par défaut
    Il n'y aucun rapport avec un makefile. Je veux dire tel que tu présentes le problème, il s'agit juste d'inclure un fichier à la compilation. Le makefile ne sert qu'a lancer cette compilation.

    Suis je clair ... ?. lol

  3. #3
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Par défaut
    Tu ne peux pas créer un autre fichier d'entête :

    aFDPR.h et faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    aFDPR.h :
     
    #ifdef LINUX
    #include "aFDPR_l.h"
    #else
    #ifdef SOLARIS
    #include "aFDPR_s.h"
    #else
     // sinonn, quoi faire ! du style
    #error "Impossible de compiler sur cet OS"
     
    #endif
    #endif
    Comme ça, partout, tu inclues juste aFDR.h, et tu compiles avec -DLINUX ou -DSOLARIS suivant le système (il y a même des expressions déjà définis lorsque l'on compile sur un certain OS, mais je ne connais pas leur nom) (étant donné que je n'ai jamais eu le cas là )

  4. #4
    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
    M'est avis que les autotools seront tes amis -- les bibliothèques portables aussi.
    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...

  5. #5
    Membre confirmé
    Inscrit en
    Juin 2004
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 60
    Par défaut
    je vais essayer d'etre un plus explicite, en effet j'ai les fichiers suivants:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    aFDR_l.h
    aFDR_l.C  // qui contient
      #include "aFDR_l.h"
     
    aFDR_s.h
    aFDR_s.C  // qui contient
      #include "aFDR_s.h"
    main.C   // qui contient
    #ifdef Linux
    #include "aFDPR_l.h"
    #else
    #ifdef SunOS
    #include "aFDPR_s.h"
    #else
     // sinonn, quoi faire ! du style
    #error "Impossible de compiler sur cet OS"
     
    #endif
    #endif
    // comme milli
    et j'ai le makefile suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    Makefile:
     
    SHELL = /bin/sh
    OS_TYPE := $(shell uname -s)
    SERVER_NAME := $(shell uname -n)
    PLATFORM := $(shell uname -i)
    .....
     
    ifeq ($(OS_TYPE), SunOS)
       // compil sun version
    endif
     
    ifeq ($(OS_TYPE), Linux)
       // compil Linux version
    endif
    ...
    ....
    lorsque je lance ce Makefile avec 2 main a savoir main_l.C qui contient #include"aFDR_l.h" et main_s.C qui contient #include"aFDR_s.h" il fonctionne sans probleme mais lorsque j'utilise un main.C comme plus haut ca ne marche plus et la est ma question comment le faire avec un main qui peut choisir l'un des 2 include suivant le OS
    merci de me repondre

  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
    Tu ferais mieux au niveau de ton main de n'avoir qu'un seul include, mais de compiler un .cpp ou l'autre en fonction de ta plateforme cible -- je suppose que tes fonctions linux/solaris sont interchageables entre elles (si on s'en tient à leur rôle).
    Bref. Encapsule.
    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...

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

Discussions similaires

  1. [VB6] [Système] Récupérer le contenu d'une fenêtre DOS
    Par Nounours666 dans le forum VB 6 et antérieur
    Réponses: 16
    Dernier message: 18/11/2004, 16h38
  2. [Kylix] libc.system
    Par sdoura2 dans le forum EDI
    Réponses: 1
    Dernier message: 19/10/2002, 13h48
  3. [VB6] [Système] Barre des taches
    Par SpaceFrog dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 08/10/2002, 15h16
  4. [VB6] [Système] Icones du systray qui veulent pas partir
    Par Ctof dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 07/10/2002, 09h41
  5. [TP7]systeme d'exploitation
    Par numeror dans le forum Turbo Pascal
    Réponses: 10
    Dernier message: 15/08/2002, 08h47

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