Как вы получаете доступ к переменным с помощью NMake? - PullRequest
1 голос
/ 21 июня 2010

У меня есть make-файл со следующим кодом.Я пытаюсь установить переменную в операторе if.Это не ошибка, но %OPTION% просто печатает %OPTION (только с одним процентным знаком), а $(OPTION) ничего не печатает.Пожалуйста, помогите

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)  

Выход

test1 = %OPTION  
test2 =   
if ".debug" == ".debug" SET OPTION="-d"  
OPTION = %OPTION  
OPTION = $(OPTION)

1 Ответ

2 голосов
/ 16 августа 2010

Вы не можете устанавливать переменные внутри операторов зависимости (например, в этом случае "init"). На самом деле, вы также не можете использовать операторы if. Переменные могут быть установлены внешними пакетными файлами до вызова make-файла (и этот пакетный файл затем может вызвать make-файл) или вне операторов зависимостей, таких как RELEASE_OR_DEBUG в этом примере.
Чтобы получить доступ к переменным внутри операторов зависимостей, используйте $ (VARIABLE_NAME). Имейте в виду, что если имя переменной не найдено, оно будет просто использовать пустую строку (например, в вашем тесте "@echo test2 = $ (OPTION)", где переменная OPTION не была найдена).

...