构建过程中的问题是由于“模型”中的以下几行。可“makefile。.mk文件包含以下代码:
MATLAB_ROOT = C:\Program Files\MATLAB\R2013a
ALT_MATLAB_ROOT = C:\Program Files\MATLAB\R2013a
MATLAB_BIN = C:\Program Files\MATLAB\R2013a\bin
ALT_MATLAB_BIN = C:\Program Files\MATLAB\R2013a\bin
由于MATLAB_ROOT和ALT_MATLAB_ROOT变量具有相同的值,makefile使用了带有空格的MATLAB_ROOT值。构建过程不知道如何处理路径中有空格的文件。MATLAB通常用短路径名填充ALT_MATLAB_ROOT,通常是“C:\PROGRA~1”。但是,在某些Windows系统上,短路径名的生成可能被禁用。此外,如果MATLAB本身在R2015a SP1更新和后续版本中安装在包含空格的路径中(例如C:\Program Files),则该问题已修复,不会发生。
正确的代码应该如下所示:
MATLAB_ROOT = C:\Program Files\MATLAB\R2013a
ALT_MATLAB_ROOT = C:\PROGRA~1\MATLAB\R2013a
MATLAB_BIN = C:\Program Files\MATLAB\R2013a\bin
ALT_MATLAB_BIN = C:\PROGRA~1\MATLAB\R2013a\bin
有一些方法可以解决这个问题。
这可能是最简单的解决方案。万博 尤文图斯Windows注册表中有一个设置,可以启用/禁用文件路径的短名称生成。请使用以下步骤更改此设置:
(注意:由于程序文件文件夹上的Windows安全设置,此方法可能不起作用。如果在第4步中收到“错误:访问被拒绝”的消息,请使用其他解决方案之一。)万博 尤文图斯
1.进入Windows开始菜单,搜索“regedit.exe”。将打开一个新窗口。
2.导航到以下位置:
HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ \文件系统\ NtfsDisable8dot3NameCreation控制
3.修改“NtfsDisable8dot3NameCreation”的值为0。
将该值更改为0将允许在Windows路径中使用短名称。更多信息可以在微软的网站上找到:
4.但是,更改上述值只会设置更改后创建的短名称文件和文件夹。在Windows命令提示符中设置“fsutil”函数的短名称。设置短名称的语法如下:
> fsutil文件setshortname . txt
以“C:\Program Files”为例,用户将发出以下命令将“Program Files”的简称设置为“PROGRA~1”。
> fsutil文件setshortname "C:\程序文件" PROGRA~
目录需要用引号括起来,因为它有空格。
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_Install \ MATLAB \ R2013a
与解决方案2非常相似,此解决方案将要求您为所使用的所有版本重新安装MATLAB。
解决这个问题的另一种方法是用双引号括起文件名。这将导致构建过程按字面意思处理双引号括起来的文件名,从而使构建成功。
为此,打开用于代码生成的模板makefile。复制这个文件并重命名它。在这个文件中,当“$(MATLAB_ROOT)”被用作路径的一部分时,在“$”符号之前和路径的最后一个字符之后加上双引号。例如,如果TMF中的原始行是:
{$工具箱(MATLAB_ROOT) \ \ rtw \ \ xpc目标\ \制造\目标xpcblocks} . c。obj:
这一行将改为:
{“美元(MATLAB_ROOT) \工具箱\ rtw_targets \ xpc目标\ \制造\ xpcblocks”} . c。obj:
在“配置参数”->“代码生成”中,确保“Template makefile”选项指向修改后的TMF,否则更改将不会反映在生成的代码中。
对于所使用的每个模板制作文件,都需要重复此方法。
一个实用的MATLAB R2017a文档页面,讨论了为文件夹名启用带有空格的构建过程的方法,可以在以下链接中找到:
在“Windows上的构建过程文件夹支持”一节中提到的限制在上面提到的方法中得到了解决。万博1manbetx