文档

为带有空格的文件夹名称启用生成过程

代码生成器使用特定于Windows的备用文件夹名称支持金宝app®或UNIX®操作系统,以处理包含空格的文件夹名称。在Windows系统上,代码生成器映射一个与MATLAB对应的驱动器®以下任一条件下的安装文件夹:

  • matlabroot文件夹是一个UNC位置。

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

构建过程为其他与构建相关的文件夹提供了类似的支持。金宝app有关支持和限制的摘要,请参见金宝appWindows上的构建过程文件夹支持金宝app

文件夹名称中的空格可以出现在与构建相关的位置的路径中:

  • matlabroot- MATLAB安装文件夹的路径。

    一个例子是matlabroot类似于C:\Program Files\MATLAB\R2015b

  • 松材线虫病-开始构建的当前工作文件夹。

    一个例子是松材线虫病在构建开始时,类似于C:\Users\username\Documents\My工作

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

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

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

    • 对于启用了8.3名称创建的UNIX系统和Windows系统,工具链通过使用来自平台的替代名称来管理文件夹名称中的空间。工具链使用TransformPathsWithSpaces属性来管理这些名称。

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

      addAttribute(toolchainObject, 'RequiresBatchFile', true);

    在为Windows系统开发工具链时,设置这两个属性。有关工具链属性的详细信息,请参见coder.make.ToolchainInfo.addAttribute

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

    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)

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

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

NMAKE:致命错误U1073: don't know how make '…

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

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

构建过程文件夹支持金宝app窗户

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

matlabroot文件夹

注意:matlabroot值由MATLAB安装位置导出。

在构建过程中,UNC位置,例如:

\ \ networkdrivematlab \ \ R20xxb

可以重新映射为:

T: \

在支持短文件名(8.3)的Windows系统上构建期间(默认使用NTFS的Windows),构建过程使用Windows AP金宝appIgetShortPathName ()获取文件夹位置。

在没有短文件名(8.3)支持的Windows系统(使用ReFS或使用NTFS禁用8.3支持的系统)上构建时,路径中带有空格的位置,金宝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命令临时映射驱动器pushdpopd

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

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

getShortPathName ()

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

NtfsDisable8dot3NameCreation

限制:以下情况下,构建过程不支持在这些文件夹的路径中金宝app使用空格:

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

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

文件夹名称有空格时的错误诊断

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

NMAKE:致命错误U1073:不知道如何制作“C:\Work\My”

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

当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

    有关启用创建短名称的详细信息。看到http://technet.microsoft.com/en-us/library/ff621566.aspx

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

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

    设置短名称,语法为:

    > fsutil file setshortname  

    例如,创建短名称PROGRA ~ 1因为名字很长C:\Program Files类型:

    > fsutil文件设置shortname "C:\Program Files" programa ~1

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

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

    目录C:\ /x

另请参阅

相关的话题

外部网站

这个话题有帮助吗?