1

在测试的第一阶段,我的代码必须在编译为 S-Function 的 Matlab Simulink 环境(2010b 32 位)中运行。编译器是 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...

这些年来,文件的数量大大增加,以至于编译需要相当长的时间。

我的问题是:是否存在一种方法来检查 an*.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

我知道这不是最干净的解决方案,并且在评论中,ms建议使用nmake文件。我从未创建过一个,也不知道如何从 Matlab 脚本中使用它。

可以做到吗?我应该按照哪些步骤来创建和使用它?

4

0 回答 0