Question

J'ai un makefile avec le code suivant. Je suis en train de définir une variable dans une instruction if. Il ne l'erreur pas, mais %OPTION% imprime juste %OPTION (avec un seul signe de pourcentage) et la $(OPTION) n'imprime rien. S'il vous plaît aider

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)  

Sortie

test1 = %OPTION  
test2 =   
if ".debug" == ".debug" SET OPTION="-d"  
OPTION = %OPTION  
OPTION = $(OPTION)
Était-ce utile?

La solution

Vous pouvez définir des variables non à l'intérieur des états de dépendance (comme dans ce cas « init »). En fait, vous ne pouvez pas utiliser si des déclarations non plus. Les variables peuvent être réglées par lot des fichiers externes avant d'appeler le makefile (et ce fichier batch peut alors appeler le makefile) ou en dehors des états de dépendance comme RELEASE_OR_DEBUG dans cet exemple.
Pour les variables d'accès à l'intérieur des états de dépendance, utilisez $ (VARIABLE_NAME). Sachez que si le nom de la variable est introuvable, il suffit d'utiliser une chaîne vide (comme dans votre « @echo test2 = $ (OPTION) » test où n'a pas été trouvé la variable OPTION).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top