Faire un don ! | | style | statistiques | contactez-nous | plan | lettre d'information

Retourner aux forums || Retourner au forum general.general

general.general : Problème et questions de Makefile

Posté par Nap (page perso, ) le 24 septembre 2004
Bonjour tout le monde

Je ne maitrise pas le fonctionnement des makefile, même si je connais le mécanisme global (des règles qui en impliquent d'autres, les dates des fichires, etc...). Et là, je tombe sur un Makefile qui me pose problème, en l'occurrence Xerces-c (du C++) sur AIX. Je ne vais pas vous demander de bosser à ma place, mais juste de répondre à quelques questions :

le Makefile principal inclut un fichier Makefile.incl
Celui-ci définit entre autres les variable MAKE_SHARED et MAKE_SHARED_C, dans lesquelles on place la commande à utiliser pour construire la bibliothèque partagée Xerces.

Or cette variable n'est utiisée nulle part, dans aucun script ni rien. Et pourtant la commande est belle et bien executée ! J'ai mis 'toto' à la place pur voir, et je me suis bien fait engueuler pour cause d'absence de commande 'toto'.

La commande construisant la librairie semble être :
${MAKE} -C $(XML_OBJ_DIR)/.. -k $(MAKE_FLAGS)

Quelle magie noire permet à make d'utiliser une variable sans qu'on le lui demande ??

Autre truc : partout la commande utilisée dans les règles du makefile est de cette forme :
${MAKE} -C $(VALIDATORS_DIR) $(MAKE_FLAGS)
(comme d'ailleurs la commande précédente aussi)

or la variable MAKE n'est jamais définie !

comment tout ceci marche-t-il ?

J'aimerais vraiment que l'on m'explique...

Merci beaucoup !

François

> Lire le message (8 commentaires, moyenne: 2,3).  

Cette discussion est archivée, il n'est plus possible de laisser des commentaires.

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.

Règles implicites

Posté par Antoine Büsch () le 24/09/2004 à 18:50. (lien). Évalué à 4.

C'est peut-être une histoire de règle implicite. Dans Gnu Make par exemple, tu peux avoir une règle de la forme:

$(CC) -c $(CPPFLAGS) $(CFLAGS)

sans que tu n'aies besoin de l'écrire explicitement. Donc tu peux modifier la valeur de CC par exemple, et ça sera pris en compte alors que tu auras l'impression que cette variable n'est utilisée nulle part dans ton Makefile.

Je n'ai pas trouvé de référence à MAKE_SHARED dans la doc de Gnu Make, donc c'est probablement spécifique au make de AIX, mais j'imagine que c'est le même principe...

  • [^]Re: Règles implicites

    Posté par Nap (page perso, ) le 25/09/2004 à 09:34. (lien). Évalué à 2.

    non j'utilise gnu make sous aix... :(

J'ai trouvé (que) ça

Posté par fred point (page perso, ) le 25/09/2004 à 16:13. (lien). Évalué à 1.

http://www.mail-archive.com/xerces-cvs%40xml.apache.org/msg03572.ht(...)

Sinon tente un grep -r MAKE_SHARED * à la racine du projet.

  • [^]Re: J'ai trouvé (que) ça

    Posté par Nap (page perso, ) le 27/09/2004 à 00:33. (lien). Évalué à 2.

    Bon, effectivement MAKE_SHARED est utilisé dans obj/Makefile.in, et défini dans src/xerces/Makefile.incl

    donc le fichier Makefile.in est utilisé lors du make ?
    je vais voir si make utilise effectivement autoqquech lors de son exécution... sinon ça voudrait dire que la modification que je fais dans Makefile.incl doit etre faite avant le ./configure ?

En passant ...

Posté par fred point (page perso, ) le 25/09/2004 à 16:15. (lien). Évalué à 2.

Y'a un forum sûrement plus approprié pour cette question

- Programmation.c
- Programmation.c++

  • [^]Re: En passant ...

    Posté par Nap (page perso, ) le 26/09/2004 à 22:05. (lien). Évalué à 2.

    bof... si ça avait été du fortran j'aurais eu le même problème je pense

    • [^]Encore mieux

      Posté par fred point (page perso, ) le 26/09/2004 à 22:40. (lien). Évalué à 2.

      Bien vu pour le fortran ;)

      Mais dans ce cas :
      - Programmation.autre

      je lâche jamais

      • [^]Re: Encore mieux

        Posté par Nap (page perso, ) le 26/09/2004 à 23:10. (lien). Évalué à 3.

        ok je m'incline :)

Revenir en haut de page || Retourner aux forums || Retourner au forum general.general