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-Function のコンパイルには、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 )
しかし、これは、各ヘッダー フォルダーと ear ソース ファイルを個別に指定する必要があるため、ファイルが増えると非常に長くなり、見苦しくなります。多くのソース ファイルにアクセスする必要がある mex ファイルを作成するより良い方法はありますか?
私は次のアイデアを持っていますが、何が正しくて最も簡単な方法なのかわかりません。
すべてのヘッダー ファイルとソース ファイル (fileX.h/fileX.cpp) をビジュアル スタジオ プロジェクトに追加し、それらを *.lib ファイルにコンパイルします。次に、mex ツールを使用して sfun.cpp のみをコンパイルし、*.lib ファイルへのアクセスを提供します。
すべてのヘッダー ファイルとソース ファイルを 1 つのディレクトリに移動します。これにより、コマンド ラインが次のように短縮されます。
mex -outdir bin sfun.cpp file1.cpp file2.cpp file3.cpp
ソースファイルが不要になるように、すべてをインライン化します。(非常に醜い解決策)
mex コンパイラ用の makefile のようなものはありますか?
#include ディレクティブを使用して、ヘッダー ファイルだけでなくソース ファイルもインクルードします。
現時点では、これらのアイデアのいずれにも確信が持てません。助けていただければ幸いです。
ありがとう
Edit1: 1 つの注釈: このプロジェクトは、後の段階で dspace pc に移植する必要があります。この場合、何か特別なことを考慮する必要がありますか?