2017-07-18 1 views
0

J'ai un argument de faire qui peut avoir trois valeurs, dites A, B et C.Quels sont les meilleurs moyens de vérifier plusieurs conditions dans le fichier makefile?

j'ai écrit ce qui suit dans makefile:

ifeq ("$(PLATFORM)", "A") 
    echo "PLATFORM A" 
else ifeq("$(PLATFORM)", "B") 
    echo "PLATFORM B" 
else 
    echo "PLATFORM C" 

avec ce je ne peux pas exécuter tous les trois cas.

J'utilise:

make PLATFORM="A" 
make PLATFORM="B" 
make PLATFORM="C" 
make 

J'ai trouvé des solutions similaires dans le débordement de la pile, mais rien ne fonctionne pour moi

J'utilise GNU make 3.81

+0

Vous devez d'abord définir (pour vous-même) le type de valeur que porte PLATFORM. Évidemment, vous voulez que ce soit une collection de noms de plate-forme, pas un seul, mais vos cas programmés ne correspondent pas à cette définition. – Vroomfondel

Répondre

0

L'erreur dans le makefile est le space manque après ifeq.

Cependant, je recherche de meilleures solutions plus portable

0

Vous devez fournir un contexte plus ce que vous essayez d'atteindre. Je pourrais utiliser quelque chose comme ceci:

include platform/$(PLATFORM).mk 

et makefiles séparés pour chaque plate-forme dans le sous-répertoire platform.

+0

Ici la plate-forme est un argument make que j'ai pris comme exemple. La plate-forme n'est pas la plate-forme littérale. Vous pouvez le remplacer par n'importe quelle autre variable –

+0

Mais ce n'est pas une raison en soi que la directive 'include' ne fonctionnerait pas. –