mex s-function组件只有在更改后才能重新编译吗?

时间:2015-05-19 13:31:56

标签: matlab mex nmake s-function

在测试的第一阶段,我的代码必须在编译为S-function的Matlab Simulink环境(2010b 32bits)中运行。编译器是Visual Studio 2010附带的编译器。

我目前有一个编译我的代码的脚本,如下所示:

mex -c -v foo_main.c
mex -c -v foo_1.c
mex -c -v foo_2.c
% etc...


mex -v foo_wrapper.c foo_main.obj foo_1.obj foo_2.obj % etc...

多年来,文件数量大大增加,编译需要相当长的时间。

我的问题是:是否存在检查*.obj是否与其*.c对应项不对应并仅在必要时重新编译的方法?

我对创建特殊脚本持谨慎态度,因为我必须根据具体情况对其进行更改,并将此视为容易出错和不必要风险的道路。

修改

我目前的解决方案是获取文件的date属性并进行比较:

c_file = dir(fullfile(pwd,'\\foo.c'));
obj_file = dir(fullfile(pwd,'\\foo.obj'));

if (datenum(c_file.date) > datenum(obj_file.date))
    mex -c -v foo.c
end

我知道这不是最干净的解决方案,in the comments, m.s.建议使用nmake文件。我从来没有创建过一个,我不知道如何从Matlab脚本中使用它。

可以吗?我应该遵循哪些步骤来创建和使用它?

0 个答案:

没有答案