Pregunta

Tengo un makefile con el siguiente código. Estoy tratando de establecer una variable en una sentencia if. No error, pero sólo imprime %OPTION% %OPTION (con sólo un signo de porcentaje) y el $(OPTION) no imprime nada. Por favor, ayuda

Makefile

RELEASE_OR_DEBUG=debug  
init:  
    SET OPTION=test  
    @echo test1 = %OPTION%  
        @echo test2 = $(OPTION)  
    if ".$(RELEASE_OR_DEBUG)" == ".debug" SET OPTION="-d"  
    @echo OPTION = %OPTION%  
    @echo OPTION = $(OPTION)  

Salida

test1 = %OPTION  
test2 =   
if ".debug" == ".debug" SET OPTION="-d"  
OPTION = %OPTION  
OPTION = $(OPTION)
¿Fue útil?

Solución

No se puede establecer variables dentro de las declaraciones de dependencia (como "init" en este caso). De hecho, no se puede utilizar si las declaraciones allí tampoco. Las variables pueden establecerse por lotes archivos externo antes de llamar al makefile (y que archivo por lotes, podrá activar el makefile) o fuera de las declaraciones de dependencia como RELEASE_OR_DEBUG en este ejemplo.
Para las variables de acceso dentro de declaraciones de dependencias, utilice $ (VARIABLE_NAME). Tenga en cuenta que si no se encuentra el nombre de la variable, sino que simplemente va a utilizar una cadena en blanco (como en su "@echo test2 = $ (OPCIÓN)" prueba donde no se encontró el OPCIÓN variable).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top