生成过程的问题是由于“model.mk”生成文件中的以下行造成的。该.mk文件包含以下代码:
MATLAB\u ROOT=C:\Program Files\MATLAB\R2013a
ALT_MATLAB_ROOT = C:\Program Files\MATLAB\R2013a
MATLAB_BIN = C:\Program Files\MATLAB\R2013a\bin
ALT\u MATLAB\u BIN=C:\Program Files\MATLAB\R2013a\BIN
因为MATLAB_ROOT和ALT_MATLAB_ROOT变量具有相同的值,所以makefile使用了带空格的MATLAB_ROOT值。构建过程不知道如何处理路径中有空格的文件。MATLAB通常用短路径名填充ALT_MATLAB_ROOT,通常是“C:\ programa ~1”。但是,在某些Windows系统上可能禁用生成短路径名。同样,如果MATLAB本身安装在一个带有空格的路径中(如C:\Program Files),在R2015a SP1更新和后续版本中,这个问题被修复,不会发生。
正确的代码应该如下所示:
MATLAB\u ROOT=C:\Program Files\MATLAB\R2013a
ALT_MATLAB_ROOT = C: \ \ MATLAB \ R2013a PROGRA ~ 1
MATLAB_BIN = C:\Program Files\MATLAB\R2013a\bin
MATLAB ALT_MATLAB_BIN = C: \ PROGRA ~ 1 \ \ R2013a \ bin
有几种方法可以解决这个问题。
这可能是最简单的解决方案。金宝搏官方网站在Windows注册表中有一个设置可以启用/禁用为文件路径生成短名称。请使用以下步骤更改此设置:
(注意:由于Program Files文件夹上的Windows安全设置,此方法可能不起作用。如果在步骤4中收到一条消息,上面写着“错误:访问被拒绝”。请使用其他解决方案之一。)金宝搏官方网站
1.转到Windows开始菜单,搜索“regedit.exe”。将打开一个新窗口。
2.导航到以下位置:
HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ \文件系统\ NtfsDisable8dot3NameCreation控制
3.将“NtfsDisable8dot3NameCreation”的值修改为0。
将该值更改为0将允许在Windows路径中使用短名称。更多信息可以在微软的网站上找到:
4.但是,更改上面的值只会设置更改后创建的短名称文件和文件夹。设置在Windows命令提示符中使用“fsutil”函数的简短名称。设置短名称的语法如下:
> fsutil文件短setshortname <文件名> < >
对于“C:\Program Files”示例,用户将发出以下命令,将“Program Files”的短名称设置为“PROGRA~1”。
> fsutil文件设置ShortName“C:\Program Files”程序1
目录需要用引号括起来,因为它有空格。
5.要检查短名称是否被正确设置,使用"dir"命令和"/x"选项来显示短名称。
更多关于“fsutil”的信息可以在这里找到:
- 解决方案2 -创建MATLAB安装文件夹的符号链接:
1.打开Windows命令提示符。然后进入C:目录。
2.创建指向MATLAB版本安装位置的符号链接。语法如下:
例如,典型的MATLAB安装文件夹是C:\Program Files\MATLAB。要链接到名为MyMatlab的文件夹,请使用以下命令:
> mklink /d C:MyMatlab“C: \ Program Files \ MATLAB”
如果您打开新的MyMatlab文件夹,您应该会看到安装的每个MATLAB版本的文件夹。
3.为MATLAB创建一个新的快捷方式。它可以放在你的桌面上,也可以放在你想放的任何地方。
4.右键单击快捷方式并打开属性。
5.转到“快捷方式”选项卡。在'Target:'选项中将有一个可执行文件的路径,用于从这个快捷方式启动MATLAB。修改此路径以使用新创建的符号链接。对于上面的例子,应该是这样的
C: \ MyMatlab \ R2013a \ bin \ matlab.exe
6.从此快捷方式启动MATLAB。通过在命令窗口中键入“matlabroot”而不带引号来验证位置,现在应该没有空格了。
7.如果您有多个版本的MATLAB,请对每个版本重复步骤3-6,以便从路径中没有空格的位置启动。
这个解决方案将适用于新创建的快捷方式。如果你从不同的位置启动MATLAB,它将不会使用符号链接,路径中的空格也会有同样的问题。
我们使用短路径的原因是为了避免路径中的空白。通过在路径中没有任何空格的位置重新安装MATLAB,可以解决构建问题。然而,这将要求您下载并重新安装MATLAB。
例如,MATLAB可以安装在如下路径
C:\MATLAB\U安装\MATLAB\R2013a
与解决方案2非常相似,此解决方案将要求您为所使用的所有版本重新安装MATLAB。
解决此问题的另一种方法是将文件名用双引号括起来。这将导致生成过程按字面意义处理包含在双引号中的文件名,这将导致生成成功。
为此,打开用于代码生成的模板makefile。复制这个文件并重命名它。在这个文件中,无论“$(MATLAB_ROOT)”用作路径的一部分,在“$”符号之前和路径的最后一个字符之后加双引号。例如,如果TMF中的原始行是:
{$工具箱(MATLAB_ROOT) \ \ rtw \ \ xpc目标\ \制造\目标xpcblocks} . c。obj:
该线路将替换为:
{“美元(MATLAB_ROOT) \工具箱\ rtw_targets \ xpc目标\ \制造\ xpcblocks”}.c.obj:
在“Configuration Parameters”->“Code Generation”中,确保“Template makefile”选项指向修改过的TMF,否则更改将不会反映在生成的代码中。
对于所使用的每个模板生成文件,都需要重复此方法。
关于MATLAB R2017a的一个有用的文档页,讨论了如何为带有空格的文件夹名启用构建过程的方法,可以在以下链接中找到:
在“Windows上的构建过程文件夹支持”一节中提到的限制在上面提到的方法中得到了解决。金宝app