2011-07-01 6 views
6

Jak napisać wyrażenie warunkowe do pliku MakeUp GNU make, który rozpoznaje architekturę (w tym przypadku Intel OS X kontra Linux), tak aby można było odpowiednio ustawić flagi, bez wymagania, aby użytkownik końcowy określał plik Makefile podczas uruchamiania make -f?Jak kodować plik Makefile, który odróżnia system Intel OS X od systemu Linux?

EDIT

powinien określić, które pojawia się błąd makefile z instrukcji ifeq który zawiera polecenie powłoki, jeśli to uwarunkowane jest umieszczony poza cel:

'commands commence before first target. Stop.'

Odpowiedz

10

powinien być w stanie sprawdzić wyjście jednego z wariantów uname, a następnie wybrać różne działania withing się makefile w zależności od tego.

Szczegółowe informacje znajdują się w części man uname.

W kategoriach jak go używać z GNU make, można uzyskać informacje na zmienną z funkcji shell a następnie użyć ifeq na tej zmiennej:

platform=$(shell uname -o) 

ifeq ($(platform),Cygwin) 

defrule: 
    echo I am running in Cygwin. 

else 

defrule: 
    echo I am running elsewhere. 

endif 
+1

'uname -o' nie jest właściwie ważne na OS X. 'uname -s' może być wystarczające. –

1

uname jest Twój przyjaciel.

$ uname -o 
GNU/Linux 
Powiązane problemy