2016-07-22 2 views
1

Я пишу Makefile так:Как Makefile разделяет строку на отдельные слова?

all: 
    @echo $(wildcard $(include)/*.sh) 
    @echo $(include) 

.PHONY:all 

вход I make "include=~" и выход

/home/ubuntu/caps_esc.sh /home/ubuntu/ss.sh 
/home/ubuntu 

Но когда inputing make "include=~ " (обратите внимание на белое пространство!) Выход

/home/ubuntu 
/home/ubuntu 

что означает, что переменная include равна ~ плюс пробел. Итак, мой вопрос: как Makefile разделяет строку на отдельные слова?

ответ

1

Make использует пробел для разделения лексем, дополнительные результаты пространства в $(wildcard ~ /*.sh) который дает функцию wildcard два маркера, ~ и /*.sh, а не одного маркера ~/*.sh.

В определенных обстоятельствах Make будет обрезать только пробелы, вы должны прочитать manual для деталей.

Смежные вопросы