主要内容

对文件夹名称的构建过程支持金宝app

带空格的文件夹名称

Windows操作系统®系统,代码生成器映射驱动器对应的MATLAB®以下任一条件的安装文件夹:

  • matlabroot文件夹是UNC位置。

  • 路径matlabroot文件夹包含空格,系统不支持其他名称。金宝app

这些文件夹路径可以包含空格:

  • MATLAB安装文件夹的路径(matlabroot).例如,C:\Program Files\MATLAB\R2015b

  • 开始构建的当前工作文件夹的路径(松材线虫病).例如,C:\Users\username\Documents\My工作

  • 构建过程使用的编译器的安装文件夹的路径。

如果您的工作环境包括上述一个或多个场景,请为构建过程使用以下支持机制:金宝app

  • 如果您使用工具链方法构建生成的代码,则系统对文件夹名称中空格的支持会影响工具链操作:金宝app

    • Linux®在支持8.3名称创建的系统和Windows系统中,工具链通过使用来自操作系统的替代名称来管理文件夹名称中的空间。工具链使用TransformPathsWithSpaces属性来管理这些名称。

      addAttribute(toolchainObject, 'TransformPathsWithSpaces', true);

      驱动器和文件夹的安全权限决定了工具链是否转换路径。例如,如果路径包含一个具有禁止8.3路径转换的安全配置的文件夹,则工具链不会转换路径,构建过程将产生警告。

    • 对于禁用了8.3名称创建的Windows系统,工具链通过使用批处理文件(.bat)映射网络驱动器来管理文件夹名称中的空间。该操作需要添加RequiresBatchFile属性设置为工具链定义。

      addAttribute(toolchainObject, 'RequiresBatchFile', true);

    在为Windows系统开发工具链时,请同时设置这两个属性。有关工具链属性的更多信息,请参见addAttribute

  • 如果使用模板生成文件方法构建生成的代码,则模板生成文件(.tmf)需要代码来管理文件夹名称中的空格。当替代文件夹名称(Windows短名称)与文件系统文件夹名称(Windows长名称)不同时,将此代码添加到makefile中。

    如果"$(MATLAB_ROOT)", ALT_MATLAB_ROOT = |>ALT_MATLAB_ROOT<| >ALT_MATLAB_BIN<| !! = " $ (ALT_MATLAB_ROOT) "MATLAB_ROOT = $(ALT_MATLAB_ROOT) !endif !if $(MATLAB_BIN)"! = " $ (ALT_MATLAB_BIN) "MATLAB_BIN = $(ALT_MATLAB_BIN)

    当位置标记的值不相等时,此代码将进行替换MATLAB_ROOTALT_MATLAB_ROOT.替换指示到MATLAB安装文件夹的路径包含空格。此代码应用相同类型的替换MATLAB_BINALT_MATLAB_BIN.上面的代码是特定于nmake.有关特定于平台的示例,请参阅提供的模板makefiles。

无论使用哪种构建方法,当在支持创建替代名称(短名称)方面出现问题时,Windows上都可能出现构建错误。金宝app如果构建生成类似于以下消息的错误消息,请参见解决文件夹名称中有空格时的错误

NMAKE:致命错误U1073:不知道如何使'…

当使用操作系统命令时,例如系统dos,将指定可执行文件或命令参数的路径用双引号(”“).例如:

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

此表提供了Windows构建文件夹支持和限制的摘要。金宝app

构建过程文件夹 带有UNC或空格的路径的方法 金宝app对Windows的支持

matlabroot文件夹

matlabroot值由MATLAB的安装位置导出。

在构建期间,UNC位置,例如:

\ \ networkdrivematlab \ \ R20xxb

可以重新映射为:

T: \

在具有短文件名(8.3)支持的Windows系统上构建期间(使用NTFS的Windows的默认值),构建过程使用Window金宝apps APIgetShortPathName ()用于文件夹位置。

在不支持短文件名(8.3)的Windows系统(使用ReFS或禁用8.3支持的NTFS系统)上构建时,路径中带有空格的位置,例如:金宝app

C:\Program FilesMATLAB \\ R20xxb

可以重新映射为:

T: \ R20xxb

构建过程文件夹支持独立于文件系统(NTFS金宝app或ReFS)或文件系统配置,支持短文件名。

限制:

在需要驱动器映射安装位置的系统上,构建过程要求驱动器号可用于映射。

在没有短文件名(8.3)支持的系统上(使用ReFS或使用禁用8.3支持的NTFS)金宝app,安装位置中的最终文件夹不能包含空格。例如,最终文件夹名:

C:\Program FilesMATLAB \\ R20xxb sp1

不支持。金宝app

代码生成文件夹

模拟缓存文件夹

自定义代码源文件位置-其中,这些位置包括由以下文件指定的文件夹:

  • rtwmakecfg.m

  • 型号配置参数其他构建信息

  • 代码替换库

对于UNC位置,构建过程使用shell命令临时映射驱动器pushd而且popd

构建过程文件夹支持独立于文件系统(NTFS金宝app或ReFS)或文件系统配置,以支持短路径名称。

对于带有空格的路径,构建过程使用Windows短路径名(8.3),通过使用Windows API:

getShortPathName ()

构建过程文件夹支持依赖于NTFS文件系统,金宝app需要Windows默认支持。注册表为以下情况设置值2或0:

NtfsDisable8dot3NameCreation

限制:在以下情况下,生成过程不支持在这些文件夹的路径金宝app中设置空格:

  • 禁用短路径名称支持的NTFS文件系统金宝app

  • ReFS文件系统(该文件系统不支持短路径名)金宝app

解决文件夹名称中有空格时的错误

在Windows上,当对短文件名的创建支持出现问题时,可能会发生构建过程错误。金宝app当此问题影响构建时,您将看到类似于以下内容的错误消息:

NMAKE:致命错误U1073:不知道如何使“C:工作\我”

如果文件夹名称中的空格(C: \ \我的工作模型)阻止构建过程找到要构建的模型或文件。有关对文件夹名称或路径中的空格敏感的与构建相关的文件夹的说明,请参见带空格的文件夹名称

当Windows短文件名对文件名的支持被禁用时,为了避免文件夹名称中带有空格的问题,请不要使用带有空格的路径。金宝app例如,在没有空格的路径上安装第三方软件。对于包含模型、源文件或库的文件夹,不要使用带空格的路径。

使用带空格的文件夹名的构建可能会出现问题,因为可能会禁用Windows备用名称支持。金宝app构建过程在Windows系统上使用此备用名称支持。金宝app有很多术语支持此文件、文件夹和路径替代名称:金宝app

  • 8.3的名字

  • DOS路径

  • 短文件名(SFN, ShortFileName)

  • 长名别名

  • Windows路径别名

验证驱动器使用的文件系统类型。在Windows资源管理器中,右键单击驱动器图标并选择属性。

  • 如果文件系统是参考文献(弹性文件系统),这是一个问题。ReFS不提供短文件名支持。金宝app除了MATLAB安装文件夹外,构建过程不支持文件夹名称中带有空格的ReFS文件系统。金宝app如果您的工作环境要求对构建文件夹或其他外部代码文件夹提供短文件名支持,请不要使用ReFS。金宝app

  • 如果文件系统是NTFS(新技术文件系统),构建错误可能与注册表设置不兼容有关。继续故障排除步骤。

此错误可能源于使用NTFS的系统上短文件名支持的问题。金宝app检查允许为文件、文件夹和路径创建短名称的Windows注册表设置。

  1. 以管理员身份打开Windows命令提示符。例如,在Windows开始菜单中键入cmd,右键单击用于cmd . exe图标,然后选择以管理员身份运行

  2. 改为windows \ system32系统文件夹和查询NtfsDisable8dot3NameCreation输入状态:

    > fsutil 8dot3name查询
  3. 如果注册表状态为NtfsDisable8dot3NameCreation不是2,默认(音量级别设置),通过输入将值更改为2:

    > fsutil 8dot3name set 2

    有关启用短名称创建的详细信息。看到https://docs.microsoft.com/en - us/previous versions/windows/it pro/windows - server - 2012 r2 -和- 2012/ff621566 (v = ws.11)

    更改注册表设置只允许为更改后创建的文件和文件夹创建短名称。

  4. 若要为禁用短名称创建时创建的文件创建短名称,请在Windows命令行上使用fsutil实用程序。

    要设置短名称,语法为:

    > fsutil文件setshortname   . txt

    例如,创建短名称PROGRA ~ 1对于长名字来说C:\Program Files类型:

    > fsutil文件setshortname "C:\程序文件" PROGRA~

    C:\Program Files文件夹名称用引号括起来,因为其中有空格。

  5. 要验证是否创建了短名称,请使用dir命令/ x选项显示短名称。

    >目录C:\ /x

具有特殊字符的文件夹名称

如果与构建相关的文件夹路径包含以下内容,构建过程可能会产生错误:

  • 不属于系统区域设置的Unicode字符。

  • 一种日文(多字节)字符,其最后一个字节等于5度十六进制字符。make和编译器工具可能会错误地将最后一个字节解释为“\”(反斜杠)字符。

非常长的文件夹路径

给MinGW®当命令行长度超过Windows限制32,767个字符时,编译过程将产生一个错误。如果出现此错误,请检查包含路径的长度。通过在名称较短的代码生成文件夹中构建生成的代码,可以减少命令行长度

另请参阅

相关的话题

外部网站