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
# Règles implicites
Posté par Antoine Büsch . Évalué à 4.
$(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 . Évalué à 2.
# J'ai trouvé (que) ça
Posté par fred point . Évalué à 1.
Sinon tente un grep -r MAKE_SHARED * à la racine du projet.
[^] # Re: J'ai trouvé (que) ça
Posté par Nap . Évalué à 2.
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 . Évalué à 2.
- Programmation.c
- Programmation.c++
[^] # Re: En passant ...
Posté par Nap . Évalué à 2.
[^] # Encore mieux
Posté par fred point . Évalué à 2.
Mais dans ce cas :
- Programmation.autre
je lâche jamais
[^] # Re: Encore mieux
Posté par Nap . Évalué à 3.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.