如何将文件路径变量传递给mex命令?

时间:2018-02-07 16:38:14

标签: c++ matlab mex

目前正在尝试创建脚本化mex文件生成的最小示例。

我正在运行MATLAB .m脚本来生成mex文件。我想将所有参数作为变量传递,以便在给定文件名/路径列表时可以自动执行一堆mex文件构建。

#1 : unknown argument -outdir
input = ' -outdir C:/Users/ian/mexTesting/mexFiles'
mex('src/helloworld.cpp', input)

#2 : unknown filepath / can't find location (interprets entire string as path to mex file)
input = 'src/helloworld.cpp -outdir C:/Users/ian/mexTesting/mexFiles'
mex(input)

#3 : same issue as #2
mex input

#4 : Works, but no variables included, so no easy way to automate
mex src/helloworld.cpp -outdir /mexFiles

所有这些(#4除外)都得到未知的参数-outdir,或者它将输入字符arr解释为mex文件的路径。

有谁知道如何将变量传递给mex命令?

我找不到任何真正回答过这个问题的问题。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:3)

这应该可以解决问题:

input = 'src/helloworld.cpp';
output = '/mexFiles';

eval(['mex ' input ' -outdir ' output]);

答案 1 :(得分:1)

执行表格

的命令时
func arg1 arg2 arg3

MATLAB将此视为与

相同
func('arg1', 'arg2', 'arg3')

相反,当你做

之类的事情时
input = ' -outdir C:/Users/ian/mexTesting/mexFiles'
mex('src/helloworld.cpp', input)

就像你运行

一样
mex src/helloworld.cpp ' -outdir C:/Users/ian/mexTesting/mexFiles'

相同
mex src/helloworld.cpp -outdir C:/Users/ian/mexTesting/mexFiles

如果要将参数参数化为MEX,则需要将每个以空格分隔的参数保留在单独的字符串中。因此,例如,您可以使用

outdirArg = 'C:/Users/ian/mexTesting/mexFiles';
mex('src/helloworld.cpp', '-outdir', outdirArg);

如果要在单个变量中批量处理一堆参数,可以使用单元格数组和逗号分隔的列表扩展,如下所示:

args = {'-outdir', 'C:/Users/ian/mexTesting/mexFiles'};
mex('src/helloworld.cpp', args{:});