Как предотвратить выполнение GNU Make, когда определение переменной имеет завершающие пробелы - PullRequest
1 голос
/ 29 октября 2010

У меня было простое определение переменной в моем make-файле:

THIS         := ~/edan 

и в ней были завершающие пробелы.

Позже, когда я определил другую переменную в терминах этой:

WARES       := $(THIS)/wares

фактическая переменная была /home/directory/edan wares

и затем правило make clean удалило /home/directory/edan вместо того, что я хотел.

Как я могу предотвратить выполнение make-файла, если в строке есть завершающие пробелы?

1 Ответ

3 голосов
/ 29 октября 2010

Хотя вы могли бы написать Makefile так, чтобы он проверял переменную на наличие пробелов и выходил, если он находил, есть лучшие способы справиться с этой ситуацией.

В этом случае я бы рекомендовал использовать функцию addsuffix для объединения $(THIS) и /wares вместо того, чтобы делать это вручную. Функция addsuffix удалит конечные пробелы для вас. Другими словами:

WARES := $(addsuffix /wares,$(THIS))

Если вы действительно хотите, чтобы он завершился, если он обнаруживает конечные пробелы, вы можете сделать это:

THIS := ~/edan
ifneq "$(THIS)" "$(strip $(THIS))"
    $(error Found trailing whitespace)
endif
...