2011-07-01 8 views
6

¿Cómo escribo un condicional en un Makefile GNU make, que discierne la arquitectura (Intel OS X vs Linux, en este caso) para que pueda establecer indicadores de forma adecuada, sin requerir que el usuario final especifique el Makefile al ejecutar make -f?¿Cómo codigo un Makefile que puede diferenciar entre Intel OS X y Linux?

EDITAR

debería especificar que consigo un error makefile de una declaración ifeq que contiene un comando shell, si se coloca condicionar esto fuera un objetivo:

'commands commence before first target. Stop.'

Respuesta

10

Usted debe ser capaz de verificar la salida de una de las variantes uname y, a continuación, elegir diferentes acciones en el canto del makefile en función de eso.

Ejecute man uname para obtener más información.

En términos de cómo lo usa desde hace GNU, se puede obtener la información en una variable de la función shell y luego usar ifeq en esa variable:

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' no es en realidad válido en OS X. 'uname -s' puede ser suficiente. –

1

uname es tu amigo.

$ uname -o 
GNU/Linux 
Cuestiones relacionadas