2011-01-24 27 views
11

Potrzebuję zrobić plik Makefile i powinien on mieć regułę run. Jednak uruchomienie wymaga pewnych parametrów.Parametr reguły w Makefile

Czy ktoś ma pojęcie, jak przekazywać argumenty podczas uruchamiania reguły w pliku Makefile? Chcę móc uruchomić regułę run z argumentami, wpisując make run foo bar.

próbowałem tego, ale to nie działa:

run: 
    make compile 
    ./scripts/runTrips $1 $2 $PLACES $OUT $VERS 

Parametry chcę dostarczane są pierwszym i drugim.

Odpowiedz

21

Podczas przekazywania parametrów do polecenia make, odwołaj się do nich jak do innych zmiennych wewnętrznych.

Jeśli makefile wygląda następująco:

run: 
     script $(param1) $(param2) 

można nazwać z następującą składnią:

$> make run param1=20 param2=30 

i uczynić powinna wywołać skrypt jak:

script 20 30 
+1

to faktycznie działa, ale mogę go uruchomić, gdy piszę: $> make uruchomić (a nie param1 = ....) – amit

+4

@amit gr: Nie, coś takiego jak '' zrobić bieg jest nie jest możliwe, ponieważ 'make' chce zinterpretować to jako nazwę docelową. Rozważmy na przykład 'make all install': najpierw cel" all "jest przetwarzany, następnie cel" install ". Wszystko, co chcesz być rodzajem parametru, musi zostać przekazane za pomocą składni 'klucz = wartość' (lub zmiennych środowiskowych o tej samej nazwie). – DarkDust

2

zrób to sam nie podaje argumentów przechodzących, takich jak skrypty. Zwykle marka jest używana w następujący sposób: konfigurujesz projekt, zamiast uruchamiać tylko proste "make". Konfigurację można wykonać, uruchamiając skrypt powłoki "configure". Ten skrypt to ten, któremu możesz przekazać parametry. Na przykład:

./configure param1 param2 
make run 

skrypt configure musi przeanalizować parametry i zapisać je w pliku config.mk. config.mk musi zawierać następujące elementy:

PARAM1 = val1 
PARAM2 = val2 

Twój Makefile musi zawierać config.mk:

TOP = . 
include $(TOP)/config.mk 

run: 
    make compile 
    ./scripts/runTrips $(PARAM1) $(PARAM2) $(PLACES) $(OUT) $(VERS) 

W swoim skryptem „configure” można również sprawdzić parametry pod względem poprawności i wprowadzić inne kontrole i obliczenia.