2015-08-27 3 views
3

Ma tâche consiste à transmettre plusieurs arguments à l'un de mes fichiers binaires exécutables. Par exemple, j'ai un binaire qui prend 6 arguments, il fonctionne très bien quand je tape:passer plusieurs arguments à partir de makefile

./a.out 1 2 3 4 5 6 

Je veux faire la même chose en utilisant un makefile de sorte que lorsque je tape make INPUT=1 2 3 4 5 6 il doit exécuter le a.out avec tous les six arguments de l'INPUT. Je peux le faire si je passe les arguments avec des caractères d'échappement comme:

make INPUT=1\ 2\ 3\ 4\ 5\ 6 

mais est-il un moyen de faire exécuter comme

make INPUT=1 2 3 4 5 6 

contenu makefile:

@gcc prime.c 
@./a.out ${INPUT} 
+0

La liste des paramètres doit être groupée. semblable à -Dinput = "1 2 3 4 5 6" Cependant, un makefile est de créer des choses, comme l'exécutable, de ne pas exécuter l'exécutable. – user3629249

+0

Le regroupement d'arguments est effectué par le shell. Faire seulement obtient ce que le shell le passe. La barre oblique inverse est une façon (généralement la moins souhaitable) d'échapper des caractères. Si vous devez taper plus d'une barre oblique inverse, utilisez plutôt des guillemets, comme dans la réponse acceptée. Notez qu'il existe un deuxième niveau de shell impliqué dans la ligne qui exécute le programme. Si vous deviez passer '' une phrase composée de plusieurs mots '' comme argument unique au programme (ainsi que d'autres arguments), vous devrez travailler plus fort. –

Répondre

2

Juste mettre les args entre guillemets.

make INPUT="1 2 3 4 5 6"