exponenta event banner

Поддержка процесса построения имен папок с пробелами или специальными символами

Имена папок с пробелами

В системе Windows ® генератор кода сопоставляет диск, соответствующий папке установки MATLAB ®, с одним из следующих условий:

  • matlabroot является UNC-расположением.

  • Путь к matlabroot содержит пробелы, и система не поддерживает альтернативные имена.

Пути к папкам могут содержать пробелы:

  • Путь к папке установки MATLAB (matlabroot). Например, C:\Program Files\MATLAB\R2015b

  • Путь к текущей рабочей папке, в которой начинается построение (pwd). Например, C:\Users\username\Documents\My Work.

  • Путь к папке установки компилятора, используемой процессом построения.

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

  • При использовании подхода, основанного на цепочке инструментов, для создания сгенерированного кода системная поддержка пробелов в именах папок влияет на работу цепочки инструментов:

    • Для систем Linux ® и систем Windows с включенным созданием имен 8.3 схема инструментов управляет пробелами в именах папок с помощью альтернативных имен операционной системы. В цепочке инструментов используется TransformPathsWithSpaces для управления этими именами.

      addAttribute(toolchainObject, 'TransformPathsWithSpaces', true);

      Разрешения безопасности дисков и папок могут определять, будет ли цепочка инструментов преобразовывать путь. Например, если путь содержит папку с конфигурацией безопасности, запрещающей преобразование пути 8.3, то схема инструментов не преобразует путь, и процесс построения выдает предупреждение.

    • В системах Windows, в которых создание имен 8.3 отключено, цепочка инструментов управляет пробелами в именах папок путем сопоставления сетевого диска с использованием пакетного файла (.bat). Эта операция требует добавления RequiresBatchFile атрибут определения цепочки инструментов.

      addAttribute(toolchainObject, 'RequiresBatchFile', true);

    При разработке цепочки инструментов для системы Windows задайте оба атрибута. Дополнительные сведения об атрибутах цепочки инструментов см. в разделе addAttribute.

При возникновении проблем с поддержкой создания альтернативных имен (коротких имен) в Windows могут возникать ошибки построения. Если сборка генерирует сообщение об ошибке, подобное следующему, см. раздел Устранение ошибок при наличии пробелов в именах папок.

NMAKE : fatal error U1073: don't know how to make ' ...

При использовании команд операционной системы, таких как system или dos, заключите пути, определяющие исполняемые файлы или параметры команд в двойные кавычки (" "). Например:

system('dir "D:\Applications\Common Files"')

В этой таблице приводится сводная информация о поддержке папок сборки и ограничениях для Windows.

Папки процесса построенияПодход для путей с UNC или пространствамиПоддержка Windows

matlabroot папка

matlabroot значение определяется из места установки MATLAB.

Во время построения расположение UNC, например:

\\networkdrive\matlab\R20xxb

может быть перекомпонован как:

T:\

Во время сборки в системе Windows с поддержкой короткого имени файла (8.3) (по умолчанию для Windows с использованием NTFS) процесс сборки использует Windows API getShortPathName() для расположения папки.

Во время сборки системы Windows без поддержки короткого имени файла (8.3) (системы с использованием ReFS или NTFS с поддержкой 8.3 отключены) расположение с пробелами в пути, например:

C:\Program Files\MATLAB\R20xxb

может быть перекомпонован как:

T:\R20xxb

Поддержка папок процессов, доступных независимо от файловой системы (NTFS или ReFS) или конфигурации файловой системы для поддержки коротких имен файлов.

Ограничения:

В системах, которым требуется сопоставление дисков для расположения установки, процесс сборки требует, чтобы для сопоставления была доступна буква диска.

В системах без поддержки короткого имени файла (8.3) (с использованием ReFS или NTFS с отключенной поддержкой 8.3) конечная папка в папке установки не может содержать пробелов. Например, окончательное имя папки:

C:\Program Files\MATLAB\R20xxb sp1

не поддерживается.

Папка создания кода

Расположения исходных файлов пользовательского кода - среди прочего, эти расположения включают папки, указанные библиотекой замены кода

Для расположений UNC процесс сборки временно сопоставляет диск с помощью команд оболочки pushd и popd.

Поддержка папок процесса построения доступна независимо от конфигурации файловой системы (NTFS или ReFS) или файловой системы для поддержки имени короткого пути.

Для путей с пробелами в процессе построения используется короткий путь Windows (8.3) с помощью Windows API:

getShortPathName()

Поддержка папок процесса сборки зависит от файловой системы NTFS и требует поддержки Windows по умолчанию. Реестр устанавливает значение 2 или 0 для:

NtfsDisable8dot3NameCreation

Ограничения: процесс построения не поддерживает пробелы в пути к этим папкам для:

  • Файловая система NTFS с поддержкой имени короткого пути отключена

  • Файловая система ReFS (эта файловая система не поддерживает короткие имена путей)

Имена папок со специальными символами

Если путь к папке, связанной со сборкой, содержит японский (многобайтовый) символ, где последний байт равен 5C шестнадцатеричный символ, процесс построения может привести к ошибке. Инструменты make и compiler могут неверно интерпретировать последний байт как '\' (обратная косая черта).

Устранение ошибок при наличии пробелов в именах папок

В Windows при возникновении проблем с поддержкой создания коротких имен файлов могут возникать ошибки процесса построения. Когда эта проблема влияет на построение, появляется сообщение об ошибке, подобное следующему:

NMAKE : fatal error U1073: don't know how to make 'C:\Work\My'

Это сообщение может появиться, если в имени папки имеется пробел (C:\Work\My Models) не позволяет процессу построения найти файл для построения. Описание связанных с построением папок, чувствительных к пространству в имени или пути папки, см. в разделе Имена папок с пробелами.

Чтобы избежать проблем с именами папок с пробелами, если поддержка коротких имен файлов в Windows отключена, не используйте пути с пробелами. Например, установите стороннее программное обеспечение на пути без пробелов. Не используйте пути с пробелами для папок, содержащих модели, исходные файлы или библиотеки.

Проблема может возникнуть со сборками, использующими имена папок с пробелами, поскольку можно отключить поддержку альтернативных имен Windows. В процессе построения используется поддержка альтернативных имен в системах Windows. Существует много терминов для поддержки альтернативных имен файлов, папок и путей:

  • 8.3 наименование

  • Путь DOS

  • краткое имя файла (SFN, ShortFileName)

  • псевдоним длинного имени

  • Псевдоним пути Windows

Проверьте тип файловой системы, используемой на диске. В проводнике Windows щелкните правой кнопкой мыши значок диска и выберите свойства.

  • Если файловой системой является ReFS (отказоустойчивая файловая система), это проблема. ReFS не поддерживает короткие имена файлов. За исключением папки установки MATLAB, процесс построения не поддерживает имена папок с пробелами для файловой системы ReFS. Если рабочая среда требует поддержки коротких имен файлов для папки построения или для дополнительных внешних папок кода, не используйте ReFS.

  • Если файловой системой является NTFS (New Technology File System), возможно, что ошибка построения связана с несовместимостью параметров реестра. Продолжите действия по устранению неполадок.

Ошибка может быть вызвана проблемой с поддержкой коротких имен файлов в системе, использующей NTFS. Проверьте параметр реестра Windows, который позволяет создавать короткие имена для файлов, папок и путей.

  1. Откройте командную строку Windows от имени администратора. Например, в меню Пуск Windows введите cmd, щелкните правой кнопкой мыши cmd.exe и выберите Run as administrator.

  2. Изменение на windows\system32 папку и запрос NtfsDisable8dot3NameCreation состояние путем ввода:

    > fsutil 8dot3name query
  3. Если состояние реестра NtfsDisable8dot3NameCreation не равно 2, значение по умолчанию (настройка уровня громкости), измените значение на 2 путем ввода:

    > fsutil 8dot3name set 2

    Дополнительные сведения о включении создания коротких имен. См. https://technet.microsoft.com/en-us/library/ff621566.aspx.

    Изменение параметра реестра позволяет создавать короткие имена только для файлов и папок, созданных после изменения.

  4. Чтобы создать короткие имена для файлов, созданных во время отключения создания коротких имен, в командной строке Windows используйте fsutil утилита.

    Для установки короткого имени используется следующий синтаксис:

    > fsutil file setshortname <FileName> <ShortName>

    Например, для создания краткого имени PROGRA~1 для длинного имени C:\Program Files, введите:

    > fsutil file setshortname "C:\Program Files" PROGRA~1

    C:\Program Files имя папки содержится в предложениях, поскольку в ней имеются пробелы.  

  5. Чтобы убедиться, что короткое имя создано, используйте dir команда с /x для отображения коротких имен.

    > dir C:\ /x

См. также

Внешние веб-сайты