De la sortie d'un fichier si l'état de deux variables shell sont un certain état
Donc j'ai besoin de m'assurer que si je suis de compilation croisée pour une cible spécifique qu'une variable d'environnement est définie. Si la variable n'est pas définie, alors faire devrait afficher un message, puis sur quitter.
J'ai la règle suivante dans mon Makefile:
.PHONY: checksource
all: checksource default
checksource:
$(if $(and $(ifeq ($(CROSS_COMPILE), whatever)), $(ifeq ($(VARIABLE),))), \
($(shell echo "Error! VARIABLE not defined!") \
$(shell exit 2)))
Si $CROSS_COMPILE
est fixé à quoi que ce soit:
$> echo $CROSS_COMPILE
whatever
$>
et $VARIABLE n'est pas définie:
$> echo $VARIABLE
$>
Il ne quitte pas la marque et de la cible par défaut est construit. Bon, je sais que je pourrais simplement utiliser imbriquée ifeq
de le faire, mais je veux faire joli (et d'en apprendre un peu plus sur les makefiles).
OriginalL'auteur MakeDummy | 2010-09-10
Vous devez vous connecter pour publier un commentaire.
Il n'y a pas une telle chose comme
$(ifeq)
. Je pense toujours que vous devez effectuer l'enregistrement dans le fichier makefile lui-même, non pas comme l'une des cibles:Et si vous êtes mis sur la prévention de l'imbriquée
ifeq
:Mais je ne vois pas en quoi c'est une amélioration. Si vous voulez le faire dans une cible, il suffit d'utiliser le shell et ne vous embêtez pas avec les fonctions:
J'avais toujours aller avec la première option, car vous pouvez arrêter de faire avant qu'il
stat
s tous les noms de fichiers dansMakefile
et décide de lancer l'exécution d'checksource
.OriginalL'auteur Jack Kelly
Faire dans faire est toujours mieux que d'utiliser le shell (que ce soit via
$(shell)
ou une recette). Si vous faites le chèque dans une recette, alors cela signifie que le fichier Makefile peut contenir d'autres objectifs, qui n'ont pas besoin de ce particulier de faire valoir.P. S. Si vous avez exécuté votre original faire avec
--warn-undefined-variables
vous avez peut être eu quelque idée pourquoi vos macros ont été ne se développe pas correctement:OriginalL'auteur bobbogo