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-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 ファイルを作成するより良い方法はありますか?

私は次のアイデアを持っていますが、何が正しくて最も簡単な方法なのかわかりません。

  1. すべてのヘッダー ファイルとソース ファイル (fileX.h/fileX.cpp) をビジュアル スタジオ プロジェクトに追加し、それらを *.lib ファイルにコンパイルします。次に、mex ツールを使用して sfun.cpp のみをコンパイルし、*.lib ファイルへのアクセスを提供します。

  2. すべてのヘッダー ファイルとソース ファイルを 1 つのディレクトリに移動します。これにより、コマンド ラインが次のように短縮されます。

    mex -outdir bin sfun.cpp file1.cpp file2.cpp file3.cpp
    
  3. ソースファイルが不要になるように、すべてをインライン化します。(非常に醜い解決策)

  4. mex コンパイラ用の makefile のようなものはありますか?

  5. #include ディレクティブを使用して、ヘッダー ファイルだけでなくソース ファイルもインクルードします。

現時点では、これらのアイデアのいずれにも確信が持てません。助けていただければ幸いです。

ありがとう

Edit1: 1 つの注釈: このプロジェクトは、後の段階で dspace pc に移植する必要があります。この場合、何か特別なことを考慮する必要がありますか?

4

0 に答える 0