В Windows® система, генератор кода отображает диск, соответствующий MATLAB® папка установки для любого из следующих условий:
The 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
.
Если вы используете подход make-файла шаблона для создания сгенерированного кода, make-файл шаблона (.tmf
) требует кода для управления пространствами в именах папок. Когда альтернативные имена папок (краткие имена Windows) отличаются от имен папок файловой системы (длинные имена Windows), добавьте этот код в make-файл.
ALT_MATLAB_ROOT = |>ALT_MATLAB_ROOT<| ALT_MATLAB_BIN = |>ALT_MATLAB_BIN<| !if "$(MATLAB_ROOT)" != "$(ALT_MATLAB_ROOT)" MATLAB_ROOT = $(ALT_MATLAB_ROOT) !endif !if "$(MATLAB_BIN)" != "$(ALT_MATLAB_BIN)" MATLAB_BIN = $(ALT_MATLAB_BIN) !endif
Когда значения лексем местоположения не равны, этот код заменяет MATLAB_ROOT
с ALT_MATLAB_ROOT
. Замена указывает, что путь к папке установки MATLAB содержит пространства. Этот код применяет тот же тип замены для MATLAB_BIN
с ALT_MATLAB_BIN
. Предыдущий код характерен для nmake
. Для примеров для платформы смотрите поставляемые шаблоны make-файлов.
При любом подходе к сборке, когда возникает проблема с поддержкой создания альтернативных имен (кратких имен), в Windows могут возникнуть ошибки сборки. Если при построении генерируется сообщение об ошибке, аналогичное следующему сообщению, см. поиск и устранение проблем ошибок при наличии пространств в именах папок».
NMAKE : fatal error U1073: don't know how to make ' ...
При использовании команд операционной системы, таких как system
или dos
, заключают пути, которые задают исполняемые файлы или параметры команды в двойные кавычки (" "
). Для примера:
system('dir "D:\Applications\Common Files"')
Эта таблица содержит сводные данные поддержки папок сборки и ограничений для Windows.
Создание папок процессов | Подход к путям с UNC или пространствами | Поддержка Windows |
---|---|---|
The | Во время сборки, местоположение UNC, такое как:
можно изменить как:
Во время сборки на системе Windows с поддержкой краткого имени файла (8.3) (по умолчанию для Windows с использованием NTFS) процесс сборки использует Windows API Во время сборки на системе Windows без поддержки краткого имени файла (8.3) (системы, использующие ReFS или использующие NTFS с отключенной поддержкой 8.3) расположение с пространствами в пути, например:
можно изменить как:
| Поддержка папки процесса сборки доступна независимо от файловой системы (NTFS или ReFS) или строения файловой системы для поддержки краткого имени файла. Limitations: В системах, которые требуют отображения дисков для места установки, процесс сборки требует, чтобы для отображения была доступна буква диска. В системах без поддержки краткого имени файла (8.3) (с использованием ReFS или с использованием NTFS с отключенной поддержкой 8.3) последняя папка в расположении установки не может содержать пространства. Для примера, окончательное имя папки:
не поддерживается. |
Папка генерации кода Папка кэша симуляции Расположения исходных файлов пользовательского кода - среди прочих, эти расположения включают папки, заданные:
| Для расположений UNC процесс сборки временно сопоставляет диск с помощью команд интерпретатора | Поддержка папок процесса сборки доступна независимо от файла системы (NTFS или ReFS) или файл системных строений для поддержки кратких путей имен. |
Для путей с пространствами процесс сборки использует имя краткого пути Windows (8.3) с помощью Windows API:
| Поддержка папок процесса сборки зависит от файловой системы NTFS и требует поддержки Windows по умолчанию. Значение набора реестров 2 или 0 для:
Limitations: Build не поддерживает пространства в пути к этим папкам для:
|
Если путь к папке, связанной со сборкой, содержит японский (многобайтовый) символ, где конечный байт равен 5C
шестнадцатеричный символ, процесс сборки может привести к ошибке. Инструменты make и compiler могут неправильно интерпретировать конечный байт как '\'
(backslash) символ.
В 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, которая позволяет создавать краткие имена для файлов, папок и путей.
Откройте командную строку Windows, работающую от имени администратора. Например, в меню Пуск Windows введите cmd
, щелкните правой кнопкой мыши по cmd.exe
значок и выберите Run as administrator
.
Измените на windows\system32
папка и запрос NtfsDisable8dot3NameCreation
состояние путем ввода:
> fsutil 8dot3name query
Если состояние реестра NtfsDisable8dot3NameCreation
не 2, значение по умолчанию (установка уровня тома), измените значение на 2 путем ввода:
> fsutil 8dot3name set 2
Для получения дополнительной информации о включении создания кратких имен. См. https://technet.microsoft.com/en-us/library/ff621566.aspx.
Изменение параметра реестра позволяет создавать краткие имена только для файлов и папок, созданных после изменения.
Чтобы создать краткие имена для файлов, созданных при отключении создания кратких имен, в командной строке Windows используйте fsutil
утилита.
Чтобы задать краткое имя, синтаксис:
> fsutil file setshortname <FileName> <ShortName>
Например, чтобы создать краткое имя PROGRA~1
для длинного имени C:\Program Files
, тип:
> fsutil file setshortname "C:\Program Files" PROGRA~1
The C:\Program Files
имя папки в кавычках, поскольку она имеет пространства.
Чтобы убедиться, что краткое имя было создано, используйте dir
команда с /x
опция для отображения кратких имен.
> dir C:\ /x