Matlab编译器与启动脚本

Matlab编译器与启动脚本,matlab,matlab-deployment,matlab-compiler,Matlab,Matlab Deployment,Matlab Compiler,因此,我尝试使用Matlab编译器来构建一个独立的应用程序,该应用程序使用MCR在单独的机器上运行。实际的应用程序遵循这一点来对GPU进行基准测试。当我打开matlab following时,我发出以下命令: mcc -mv -o gpuTest mainBench.m benchFcn.m executeBenchmarks.m getData.m paralleldemo_gpu_backslash.m timeSolve.m waitForCpu.m waitForGpu.m 输出为:

因此,我尝试使用Matlab编译器来构建一个独立的应用程序,该应用程序使用MCR在单独的机器上运行。实际的应用程序遵循这一点来对GPU进行基准测试。当我打开matlab following时,我发出以下命令:

mcc -mv -o gpuTest mainBench.m benchFcn.m executeBenchmarks.m getData.m paralleldemo_gpu_backslash.m timeSolve.m waitForCpu.m waitForGpu.m
输出为:

Compiler version: 5.1 (R2014a)
Dependency analysis by REQUIREMENTS.
Parsing file "/media/hdd/work/matlab/gpuBench/mainBench.m"
    (Referenced from: "Compiler Command Line").
Parsing file "/media/hdd/work/matlab/gpuBench/benchFcn.m"
    (Referenced from: "Compiler Command Line").
Parsing file "/media/hdd/work/matlab/gpuBench/executeBenchmarks.m"
    (Referenced from: "Compiler Command Line").
Parsing file "/media/hdd/work/matlab/gpuBench/getData.m"
    (Referenced from: "Compiler Command Line").
Parsing file "/media/hdd/work/matlab/gpuBench/paralleldemo_gpu_backslash.m"
    (Referenced from: "Compiler Command Line").
Parsing file "/media/hdd/work/matlab/gpuBench/timeSolve.m"
    (Referenced from: "Compiler Command Line").
Parsing file "/media/hdd/work/matlab/gpuBench/waitForCpu.m"
    (Referenced from: "Compiler Command Line").
Parsing file "/media/hdd/work/matlab/gpuBench/waitForGpu.m"
    (Referenced from: "Compiler Command Line").
Parsing file "/opt/MATLAB/R2014a/toolbox/compiler/deploy/deployprint.m"
    (Referenced from: "Compiler Command Line").
Parsing file "/opt/MATLAB/R2014a/toolbox/compiler/deploy/printdlg.m"
    (Referenced from: "Compiler Command Line").
而在另一台机器上,如果设置了环境变量,我只执行命令

./gpuTest
由此产生的错误是:

Cannot CD to /media/hdd/work/matlab (Name is nonexistent or not a directory).    
Error in startup (line 1)
问题是本应编译的脚本中没有“启动”脚本。然而,我确实有一个“startup.m”脚本,在我的启动文件夹中,它实际上执行“cd/media/hdd/work/matlab”和其他一些东西

我有两个问题:

  • 为什么它还要编译我的启动脚本呢
  • 如何修复此问题以仅执行主脚本

  • 将启动脚本更改为:

    if ~isdeployed
       cd /media/hdd/work/matlab
    end
    

    为什么-我真的不知道-我想这是为了让你可以初始化一些东西,但这不是我用来回答你两个问题的“功能”:

  • 它正在编译您的
    startup.m
    脚本,以确保主脚本的运行与常规MATLAB会话中的运行完全相同。您会发现,它还包括一堆其他需要的东西,比如您的首选项文件夹,这也是确保它与常规MATLAB会话中运行的一样需要的
  • @matlabgui已经提供了一个类似的答案,即在启动脚本中应用
    isdeployed
    ,以阻止不希望在部署版本中运行的任何内容。就我个人而言,我通常将以下内容放在启动脚本的顶部,以阻止一切
  • startup.m

    if isdeployed
        return
    end