2011-06-29 20 views
7

Koşullara göre Makefile'deki değişkenleri tanımlamaya çalışıyorum. Ifeq yalnızca kurallarda çalıştırılabildiği gibi, her kural için başvurduğum ek bir kural ekledim (def_rule).Koşullu değişken, Makefile içinde ifeq ile tanımlanır

Örnek:

def_rule: 
ifeq ($(TARGET), android) 
    CC=arm-linux-androideabi-gcc 
else 
    echo "native build" 
endf 

all: def_rule tp xi_eid_chipset.o 

Maalesef çağırma yapmak tüm döner bu:

ifeq (linux, android)
/bin/sh: Syntax error: word unexpected (expecting ")")
make: *** [def_rule] Error 2

Nedenini bilemiyorum. GNU Make belgelerinde sadece örnekleri takip ettim.

Makefiles'te koşullu tanımların nasıl yapıldığını biliyor musunuz?

cevap

9

Koşul kuralların dışında olabilir:

ifeq ($(TARGET), android) 
$(info Android) 
CC=arm-linux-androideabi-gcc 
else 
$(info native build) 
CC=something else 
endif 

(Sadece daha kolay gerekli ne de zararlı uğramamış read-- yapmak, birkaç lider mekanlarda attı ettik unutmayın.)