Makefile Règles et Si les États — Comment?
Je suis nouveau sur Makefiles, de sorte s'il vous plaît garder avec moi.
J'ai besoin de modifier un fichier Makefile de sorte que certaines règles appel à des utilitaires en fonction d'une variable.
Droit maintenant, une règle ressemble:
ci:
[shell syntax for tool (A)]
Mais maintenant j'ai besoin de ci ont une syntaxe différente en fonction de la variable. J'ai donc définir une variable globale dans le haut du fichier:
TOOL = toolA
ou
TOOL = toolB
Idéalement ce que j'aimerais c'est quelque chose comme cela, mais évidemment, il ne fonctionne pas:
ifeq ($TOOL, toolA)
ci:
[syntax for tool (A)]
else
ci:
[syntax for tool (B)
endif
Personne ne sait la meilleure façon de mettre en œuvre quelque chose comme cela?
Merci!!
MODIFIER: La syntaxe de l'outil est plus compliquée que celle de la ligne. Parfois, de ses multiples lignes, et pas seulement "toolA args etc etc". Désolé pour la confusion!
C'est ce que j'ai pensé au début, mais je voulais le faire sans porter en dehors des scripts. Peut avoir recours à si je ne peux pas obtenir que cela fonctionne. Merci bien!
OriginalL'auteur RaytheonLiszt | 2011-06-14
Vous devez vous connecter pour publier un commentaire.
Vous êtes tout simplement absent des parenthèses:
P. S. Vous pouvez faire de la réserve un peu plus serré (et enlever un peu de redondance):
Est-ce de travailler pour la comparaison de chaînes de trop?
ce est de la comparaison de chaînes. Qu'essayez-vous de faire?
J'étais en train de comparer une chaîne de caractères qui est le résultat de la
uname
. J'ai eu recours à l'écriture d'un mini script shell dans le fichier Makefile siJe ne suis pas sûr de ce que tu veux dire, mais si vous postez une question, je suis sûr que quelqu'un peut vous aider.
OriginalL'auteur Beta
Habituellement, vous devez le faire avec une macro:
Qui peut être étendu avec quelque chose comme un
TOOLARGS
macro, donc quelque chose commeEnsuite, vous pouvez modifier le makefile, ou mettre les macros sur la ligne de commande
Si vous voulez de l'encapsuler, vous pouvez utiliser un si pour définir les arguments.
les plus complexes, les commandes, le plus de mérite qu'il ya à l'aide d'un script pour couvrir la complexité.
Leffler: très vrai. Je pense que si j'ai touché un plus de routes bloquées, je vais juste vous passez votre chemin et à l'utilisation d'un script. =(
OriginalL'auteur Charlie Martin
Essayez ceci:
Maintenant, si
TOOL
esttoolA
il va utiliser la args-a1 -a2
, et siTOOL
esttoolB
alors il sera utiliser le args-b1 -b2
.OriginalL'auteur mark4o