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 :

Problème de makefile récursif


Sujet :

C++

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 111
    Par défaut Problème de makefile récursif
    Bonjour,

    J'aimerai savoir comment remonter la valeurs d'une variable recursif d'une sous makefile vers un makefile parent

    makefile A
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
       export CCFLAGS=-lm
    build:
             (cd 1) && ((MAKE) $@) 
             g++ main.cc 1/sub.o $(CCFLAGS)
    makefile B
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
       export CCFLAGS=$(CCFLAGS)  -lboost
    build:
             g++ -c sub.cc
    makefile A appelle makefile B.

    Le but est que les sous module transmettent aux makefile parent la liste des options de compilations et éventuellement des fichiers à compiler.

    Merci d'avance

    PS: C'est quoi la fonction délestage d'un forum.

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    865
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 865
    Par défaut
    Dans l'utilisation des Makefiles, je n'ai jamais vu cette façon de faire. C'est au Makefile parent de savoir comment utiliser les objets produits par les Makefile fils.
    Si tu regardes la doc de make http://www.cs.utah.edu/dept/old/texinfo/make/make.html, on parle toujours de passer des variables aux sous-Makefiles, jamais dans l'autre sens.

    Qu'il y a t'il normalement dans le répertoire 1/ ?
    le -lboost ne sert à rien dans le Makefile B. Ca ne sert qu'au link donc dans le Makefile A.
    On isole généralement variables de compilation et variables de link CCFLAGS et LDFLAGS.

    Tu pourrais vouloir faire une librairie dans le sous-répertoire. Et pour savoir comment utiliser une librairie, le Makefile d'un programme peut s'appuyer sur pkg-config. Un fichier .pc qui rassemble les options nécessaires (cflags et ldflags) est généré à la compilation de la librairie. A la compilation du programme qui utilise la librairie en question, le fichier .pc est relu afin de récupérer les options à utiliser.
    C'est le seul cas que je vois où les options sont d'une certaines façons transmises à un Makefile "parent", sauf que le Makefile "parent" peut très bien être complétement indépendant.

    Alors, en s'inspirant de ceci, tu peux à la compilation de sub.cc générer un fichier qui contient CCFLAGS et dans le Makefile A, tu lis ce fichier.
    Mais bon c'est plutôt au Makefile A de directement savoir comment linker avec sub.o.

Discussions similaires

  1. [Makefile] Problème lancement Makefile dans Shell
    Par domiq44 dans le forum Systèmes de compilation
    Réponses: 14
    Dernier message: 29/11/2006, 15h17
  2. Problème de makefile (Eclipse CDT)
    Par david cap dans le forum Eclipse C & C++
    Réponses: 3
    Dernier message: 23/11/2006, 11h17
  3. Problème avec Makefile
    Par beb30 dans le forum Autres éditeurs
    Réponses: 1
    Dernier message: 02/03/2006, 15h02
  4. [Dev-cpp]Problème de Makefile
    Par gege2061 dans le forum Dev-C++
    Réponses: 2
    Dernier message: 15/02/2005, 11h19
  5. Problème avec makefile
    Par snooopppp dans le forum Systèmes de compilation
    Réponses: 3
    Dernier message: 22/02/2004, 15h46

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