Кажется, что полный ответ на этот вопрос не найден нигде в интернете , поэтому я, наконец, сел и разобрался в случае с Windows.
В частности, «регистр Windows» относится к именам файлов, которые действительны в Windows, что означает, что они не содержат символы \
, /
, *
, ?
, "
, ^
, <
, >
, |
или разрывы строк.Это также означает, что \
и /
оба считаются допустимыми разделителями каталогов для целей Make.
Пример прояснит это лучше, чем я могу объяснить.По сути, если вы пытаетесь сопоставить путь к этому файлу:
Child\a$b {'}(a.o#$@,&+=~`),[].c
Тогда вам нужно написать следующие правила:
all: Child\\a$$b\\\ \\\ {'}(a.o\#$$@,&+=~`),[].o
%.o: %.c
$(CC) '$(subst ','"'"',$(subst \,,$(subst \\,/,$+)))'
Смотрите на него долгое время, и он будет сортироватьначать понимать что-то отдаленное.
Это работает в моей среде MSYS2, поэтому я предполагаю, что это правильно.