Make определенно не работает так, как вы думаете, если вы думаете, что make заинтересован в кавычках любого типа :).Make игнорирует (то есть обрабатывает как обычные символы, как и любые другие) как одинарные, так и двойные кавычки практически в любой ситуации, и все заставляют функции работать в простых разделителях пробелов без учета кавычек.
В общем,не практично использовать make с любой системой, для которой требуются пробелы в именах целей.Это просто не работает: слишком много make основано на пробеле как символе-разделителе, и нет общего, общего способа избежать пробела, который работает везде.
В вашем конкретном случае вы можете подшутитькак это:
E :=
S := $E $E
path := C:/some/path here
xpath := $(subst $S,^,$(path))
var := $(xpath) labas
all:
@echo $(words $(var))
@echo $(subst ^,$S,$(var))
По сути, это создает переменную $S
, которая содержит пробел, а затем заменяет все пробелы в переменной path
каким-либо другим непробельным символом (здесь я выбрал ^
но вы можете выбрать то, что вам нравится, просто обратите внимание, что это должен быть символ, который гарантированно не появится в пути).
Теперь этот путь не содержит пробелов, поэтому вы можете использовать его с makeфункции.
Это имеет существенные недостатки: здесь видна не только сложность, но и обратите внимание, что эти пути не могут использоваться в именах целей, так как они на самом деле не существуют на диске.
В общем, выпросто не следует использовать пути, содержащие пробелы, с make.Если вы должны использовать пути, содержащие пробелы, то, скорее всего, make не подходит вам.