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

Systèmes de compilation Discussion :

lien entre mon makefile et mon prgm


Sujet :

Systèmes de compilation

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 299
    Par défaut lien entre mon makefile et mon prgm
    Bonjour, j'ai trois versions d'un même code : séquentielle, pthread et parallèle avec MPI. C'est super mais quand je dois changer un truc, je dois faire 3 fois la même modification. Donc, j'aimerais avoir un seul code avec des

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    #ifdefined MPI
    faire ceci
    #elif defined PTHREAD
    faire cela
    #else /* version sequentielle */
    faire autre chose
    #end
    (syntaxe un peu douteuse, mais je la regarderai de plus près quand je coderai). Bien entendu, le choix du compilo et des options dépendent du code que l'utilisateur veut avoir. Donc dans mon Makefile, je désire avoir une variable du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    VERSION=MPI (ou PTHREAD ou SEQ)
     
    ifeq ($VERSION,SEQ)
      CC=gcc
    et ainsi de suite.

    Mais comment cette variable "VERSION" peut elle se retrouver dans mon code C pour faire mes #ifdefined ?
    Y a-t-il une autre solution ?

    Merci

  2. #2
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    En fait pour avoir la constante dans ton code, il te faut définir une constante à la compilation, comme on le fait en ligne de commande, par exemple:
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 299
    Par défaut
    Citation Envoyé par Franck.H
    En fait pour avoir la constante dans ton code, il te faut définir une constante à la compilation, comme on le fait en ligne de commande, par exemple:
    Salut, pourrais-tu être un peu plus précis ? Je n'ai pas tout très bien saisi.

  4. #4
    Membre Expert
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Par défaut
    Salut

    Fais toi une macro CPPFLAGS qui depend de cette "version"
    Ensuite utilise cette macro dans la ligne de compilation

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    CFLAGS = -Wall -W -g
     
    ifeq ($VERSION,SEQ)
      CPPFLAGS = -DVER_SEQ
    else
      CPPFLAGS = -DVER_NORMALE
    endif
     
    #.....
     
        gcc $(CFLAGS) $(CPPFLAGS) source.c -o source.o

  5. #5
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Citation Envoyé par salseropom
    Salut, pourrais-tu être un peu plus précis ? Je n'ai pas tout très bien saisi.
    Si tu veux ajouter une constante à ton programme lors de la compilation (ou tout du moins pendant la phase du pré-processeur), il faut utiliser l'option:
    à ceci tu ajoute directement le nom de la constante que tu veux, syntaxe:
    et pour une de tes constantes, si tu veux par exemple définir la contante MPI cela te donnes:
    A ce stade, le pré-processeur va mettre en place la constante dans ton programme, tout comme si tu l'avais définie en dur:
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  6. #6
    Membre Expert
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Par défaut
    Note : fais attention à ne pas melanger des fichiers objets de versions differentes, ça peut etre la cata.
    "make clean" avant de compiler une autre version
    ..ou bien ajoute le nom de la version dans les fichiers objets/executables

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 299
    Par défaut
    OK, je vais essayer ça de suite !
    A votre avis, que vaut-il mieux que je fasse : trois codes différents mais plus facile à lire où un seul mais gros code avec plein de #ifdefined blabla ?

  8. #8
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par salseropom
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    #ifdefined MPI
    faire ceci
    #elif defined PTHREAD
    faire cela
    #else /* version sequentielle */
    faire autre chose
    #end
    (syntaxe un peu douteuse,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    #if defined (MPI)
    faire ceci
    #elif defined (PTHREAD)
    faire cela
    #else /* version sequentielle */
    faire autre chose
    #end
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    #ifdef MPI
    faire ceci
    #elifdef PTHREAD
    faire cela
    #else /* version sequentielle */
    faire autre chose
    #end

Discussions similaires

  1. Réponses: 0
    Dernier message: 25/11/2011, 14h14
  2. Réponses: 2
    Dernier message: 10/04/2010, 23h01
  3. [Makefile] liens entre plusieurs makefile
    Par Tiéry dans le forum C++
    Réponses: 0
    Dernier message: 28/03/2008, 18h26
  4. [Conception] Lien entre ma BD et mon site web
    Par martoune dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 02/04/2007, 17h13
  5. [phpMyAdmin] lien entre mon code et phpMyAdmin sous xampp
    Par temperature dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 15/04/2006, 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