在测试的第一阶段,我的代码必须在编译为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脚本中使用它。
可以吗?我应该遵循哪些步骤来创建和使用它?