4

我有一个带有 c++ s-function 的 simulink 模型。这个 s-function 需要访问很多(>50)类。每个类都由一个头文件 ( .h) 和一个源文件 (.cpp) 组成。我还将我的代码分成多个目录:

root
-sfun.cpp
-folder1
--file1.h
--file1.cpp
--file2.h
--file2.cpp
-folder2
--file3.h
--file3.cpp
...

对于 s 函数的编译,我使用了 mex 函数:

mex -Ifolder1 -Ifolder2 -outdir bin sfun.cpp folder1/file1.cpp folder1/file2.cpp folder1/file3.cpp

http://de.mathworks.com/help/matlab/ref/mex.html

但是随着文件越来越多,这会变得很长而且很难看,因为我需要分别指定每个头文件夹和每个源文件。有没有更好的方法来创建需要访问大量源文件的 mex 文件?

我有以下想法,但我不确定什么是正确和最简单的方法:

  1. 将所有头文件和源文件 (fileX.h/fileX.cpp) 添加到 Visual Studio 项目并将它们编译为 *.lib 文件。然后使用 mex 工具仅编译 sfun.cpp 并提供对 *.lib 文件的访问

  2. 将所有头文件和源文件移动到一个目录中。这将缩短命令行如下:

    mex -outdir bin sfun.cpp file1.cpp file2.cpp file3.cpp
    
  3. 使所有内容都内联,这样就不需要源文件。(非常丑陋的解决方案)

  4. mex 编译器是否有某种生成文件?

  5. 通过#include 指令不仅包括头文件,还包括源文件。

目前,我不相信任何这些想法,我将不胜感激。

谢谢

Edit1:一个注释:这个项目应该在后期移植到 dspace pc。在这种情况下,我需要考虑一些特殊的事情吗?

4

0 回答 0