我有一个带有 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 文件?
我有以下想法,但我不确定什么是正确和最简单的方法:
将所有头文件和源文件 (fileX.h/fileX.cpp) 添加到 Visual Studio 项目并将它们编译为 *.lib 文件。然后使用 mex 工具仅编译 sfun.cpp 并提供对 *.lib 文件的访问
将所有头文件和源文件移动到一个目录中。这将缩短命令行如下:
mex -outdir bin sfun.cpp file1.cpp file2.cpp file3.cpp
使所有内容都内联,这样就不需要源文件。(非常丑陋的解决方案)
mex 编译器是否有某种生成文件?
通过#include 指令不仅包括头文件,还包括源文件。
目前,我不相信任何这些想法,我将不胜感激。
谢谢
Edit1:一个注释:这个项目应该在后期移植到 dspace pc。在这种情况下,我需要考虑一些特殊的事情吗?