2011-02-26 4 views
9

mi archivo fuente C++ busca una variable específica pasada desde el archivo MAKE. cuando se hace un objetivo diferente, esta definición de variable es diferente.Defina las variables de compilación basadas en el objetivo para

¿Cómo puedo definir una variable en Makefile en función del objetivo?

Gracias

+1

T ¿La variable se pasa como bandera '-D'? ¿Podrían por favor proporcionar un extracto de su Makefile con varios objetivos en cuestión? –

Respuesta

6

Qué quiere decir algo como esto:

$ cat Makefile 
BUILD := debug 

cxxflags.debug := -g -march=native 
cxxflags.release := -g -O3 -march=native -DNDEBUG 
CXXFLAGS := ${cxxflags.${BUILD}} 

all : 
    @echo BUILD=${BUILD} 
    @echo CXXFLAGS=${CXXFLAGS} 

.PHONY : all 

Salida:

$ make 
BUILD=debug 
CXXFLAGS=-g -march=native 

$ make BUILD=release 
BUILD=release 
CXXFLAGS=-g -O3 -march=native -DNDEBUG 
15

Puede utilizar target-specific variable values, que se propagan a Target requisitos previos:

all : foo bar 
foo : CXXFLAGS += -DFOO 
bar : CXXFLAGS += -DBAR 

foo bar : 
    @echo [email protected] CXXFLAGS=${CXXFLAGS} 

.PHONY : all 
+0

Tenga en cuenta que esto solo funciona con la marca de GNU. – martinkunev

+0

@martinkunev Bueno, la marca GNU es la única marca portátil, AFAIK. 'nmake' es específico de Windows y es basura, Sun hace círculos por el desagüe con el sol y Solaris ... No estoy familiarizado con otras marcas. –

Cuestiones relacionadas