2011-06-29 13 views
7

Estoy tratando de definir variables en un Makefile, según las condiciones. Como ifeq solo se puede ejecutar en reglas, he agregado una regla adicional (def_rule) a la que me refiero para cada regla.Definición de variable condicional en Makefile con ifeq

Ejemplo:

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

all: def_rule tp xi_eid_chipset.o 

Desafortunadamente, invocando hacen todas las devoluciones esto:

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

No puedo entender por qué. Acabo de seguir ejemplos en la documentación de GNU Make.

¿Sabes cómo hacer definiciones condicionales en Makefiles?

Respuesta

9

condicionales pueden estar fuera de normas:

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

(Tenga en cuenta que he sacudido dentro de unos espacios iniciales, sólo para que sea más fácil read-- no son ni necesarias ni perjudicial).

Cuestiones relacionadas