На 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
.
Если вы используете подход 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 |
---|---|---|
| Во время сборки, местоположение 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: не поддерживает пробелы в пути к этим папкам для:
|
На 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 Explorer щелкните правой кнопкой по значку диска и выберите свойства.
Если файловой системой является ReFS (Эластичная Файловая система), это - проблема. ReFS не оказывает поддержку короткого имени файла. За исключением папки установки MATLAB, процесс сборки не поддерживает имена папок с пробелами для файловой системы ReFS. Если ваша рабочая среда требует поддержки короткого имени файла папки сборки или дополнительных внешних папок кода, не используйте ReFS.
Если файловая система является NTFS (Новая Технологическая Файловая система), возможно, что ошибка сборки связана с реестром, устанавливающим несовместимость. Продолжите шаги поиска и устранения неисправностей.
Ошибка могла произойти от проблемы с поддержкой короткого имени файла в системе с помощью NTFS. Проверяйте реестр Windows, устанавливающий, который включает создание кратких названий для файлов, папок и путей.
Откройте командную строку Windows, запустившись как администратор. Например, от Windows Start menu, введите cmd
, щелкните правой кнопкой по cmd.exe
значок, и выбирает Run as administrator
.
Превратитесь в windows\system32
папка и запрос NtfsDisable8dot3NameCreation
состояние путем ввода:
> fsutil 8dot3name query
Если состояние реестра NtfsDisable8dot3NameCreation
не 2, значение по умолчанию (Установка уровня громкости), измените значение в 2 путем ввода:
> fsutil 8dot3name set 2
Для получения дополнительной информации о включении создания кратких названий. См. https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-R2-and-2012/ff621566 (v=ws.11).
Изменение настроек реестра включает создание кратких названий только для файлов и папок, которые создаются после изменения.
Чтобы создать краткие названия для файлов, созданных, в то время как создание краткого названия было отключено в командной строке Windows, используют fsutil
утилита.
Чтобы определить краткое имя, синтаксис:
> fsutil file setshortname <FileName> <ShortName>
Например, чтобы создать краткое название PROGRA~1
для длинного имени C:\Program Files
Ввод:
> fsutil file setshortname "C:\Program Files" PROGRA~1
C:\Program Files
имя папки находится в цитатах, потому что оно имеет пробелы.
Чтобы проверить, что краткое название было создано, используйте dir
команда с /x
опция, чтобы показать краткие названия.
> dir C:\ /x
Процесс сборки может произвести ошибку, если связанный со сборкой путь к папке содержит:
Символы Unicode, которые не принадлежат системной локали.
Японский (многобайтовый) символ, где итоговый байт равен 5C
шестнадцатеричный символ. Делать и инструменты компилятора могут неправильно интерпретировать итоговый байт как '\'
(обратная косая черта) символ.
Для MinGW® компилятор, процесс сборки производит ошибку, когда длина командной строки превышает предел Windows 32 767 символов. Если эта ошибка происходит, проверяйте, что длина включает пути. Можно уменьшить длину командной строки путем создания сгенерированного кода в папке генерации кода, которая имеет более короткое имя