Поддержка процесса сборки имен папок

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

На 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

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) или конфигурация файловой системы для короткой поддержки имени файла.

Limitations:

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

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

C:\Program Files\MATLAB\R20xxb sp1

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

Папка генерации кода

Папка кэша симуляции

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

  • rtwmakecfg.m

  • Параметр конфигурации модели Additional build information

  • Заменяющая библиотека кода

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

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

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

getShortPathName()

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

NtfsDisable8dot3NameCreation

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

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

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

Ошибки Поиска и устранения проблем, когда имена папок имеют пробелы

На 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, устанавливающий, который включает создание кратких названий для файлов, папок и путей.

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

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

    > fsutil 8dot3name query
  3. Если состояние реестра 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).

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

  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

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

Процесс сборки может произвести ошибку, если связанный со сборкой путь к папке содержит:

  • Символы Unicode, которые не принадлежат системной локали.

  • Японский (многобайтовый) символ, где итоговый байт равен 5C шестнадцатеричный символ. Делать и инструменты компилятора могут неправильно интерпретировать итоговый байт как '\' (обратная косая черта) символ.

Очень длинные пути к папкам

Для MinGW® компилятор, процесс сборки производит ошибку, когда длина командной строки превышает предел Windows 32 767 символов. Если эта ошибка происходит, проверяйте, что длина включает пути. Можно уменьшить длину командной строки путем создания сгенерированного кода в папке генерации кода, которая имеет более короткое имя

Смотрите также

Похожие темы

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

Для просмотра документации необходимо авторизоваться на сайте