2011-07-01 7 views
6

Bir mimariyi (GNU make Makefile) nasıl yapılandırabilirim ki bu da mimariyi (bu durumda Linux'taki Intel OS X, bu yüzden) sonlandırmayı gerektiriyordu, böylece kullanıcılara make -f'u çalıştırırken Makefile'yi belirtmek zorunda kalmadan bayrakları uygun şekilde ayarlayabilirim?Intel OS X ve Linux arasındaki farkı anlayabilen bir Makefile kodunu nasıl kodlarım?

DÜZENLEME

bu koşullu bir hedefin dışında yerleştirilirse ben, bir kabuk komutu içeren bir ifeq bildirgemden bir makefile hatası alıyorum olduğunu belirtmelidir:

'commands commence before first target. Stop.'

cevap

10

Sen uname varyantları birinin çıkışını kontrol edin ve buna bağlı olarak makefile Withing farklı işlemler tercih etmek gerekir. Ayrıntılar için man uname numaralı telefonu çalıştırın.

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' değil aslında:

Eğer GNU onu nasıl kullandıklarını açısından

Eğer shell işlevinden bir değişken haline bilgi almak ve ardından bu değişkeni ifeq kullanabilirsiniz yapmak OS X'de geçerlidir. uname -s' yeterli olabilir. –

1

uname olduğunu senin arkadaşın.

$ uname -o 
GNU/Linux