Appel à partir de l'intérieur d'un makefile
J'ai un Makefile qui fonctionne parfaitement appelé à partir d'un nouveau shell, c'est à dire:
make -C /dir/
Cependant, si je l'appelle, ce Makefile à partir de un autre Makefile, il échoue en raison de certains compliqué les problèmes de dépendance. Faire clairement a la connaissance des appels imbriqués, évident par l'impression de make[1]:
etc, et je le soupçonne de faire est en quelque sorte le partage de variables avec son enfant.
Est-il de toute façon à l'appel d'un propre faire partir dans un Makefile? Si mon build fonctionne à partir d'un propre shell, il devrait être possible d'appeler à partir d'un autre fichier Makefile sans aborder les horreurs à l'intérieur du script! 🙂
Merci!
- Il n'est pas facile. Voulez-vous dire que makefile_1 échoue lorsqu'elle est appelée à partir d'un certain makefile_2, ou de tout autre fichier makefile (comme une banale qui ne fait rien d'autre)?
- Hmmmm, bizarre. Comparer la sortie de
make -p
dans chaque cas. (Évidemment, je suis toujours courir faire avec-Rr
et--warn
—YMMV.)
Vous devez vous connecter pour publier un commentaire.
make
en effet, certaines actions de son environnement lorsqu'elle est appelée récursivement. Comme suggéré dans https://www.gnu.org/software/make/manual/html_node/Options_002fRecursion.html#Options_002fRecursion, vous pourriez écrire votre appel récursif de cette façon:et voir si ça aide. Vous pouvez également contrôler les variables qui sont exportés vers le sous-effectuer en utilisant
export
etunexport
directives (https://www.gnu.org/software/make/manual/html_node/Variables_002fRecursion.html#Variables_002fRecursion)Il y a quelques variables d'environnement à l'appelant de faire, qui a battu le destinataire de l'appel faire (CFLAGS etc...)
Ma solution a été de diff de l'environnement, nettoyer la coque et du point d'appel. J'ai ensuite ajouté manuellement les variables du problème à une liste et a créé une certaine save_env/restore_env scripts.
Merci!