MATLAB: S-function ソースコード管理について

s-functionsimulink日本語

s-function ソースコード管理に関する質問です。
下記のようにフォルダ0の下にフォルダ1と2があり、 main.mdl の中で s-function の s_func1 と s_func2 を使っているとします。 s-function 自体のビルドは、フォルダ1と2の各々に移動して実施しています。
フォルダ0 main.mdl  フォルダ1 s_func1.h s_func1.c s_func1.mexw64  フォルダ2 s_func2.h s_func2.c s_func2.mexw64
フォルダ0上で main.mdl をビルドする際、addpath でフォルダ1と2を参照しています。 このとき
 (1) s_func*.h と s_func*.c は main.mdl のビルドに直接関係していますか。    それとも、s_func*.mexw64 のみが直接関係していますか。  (2) s_func1.h と s_func2.h は、名前が同じで内容が異なるように設計しても    問題ないでしょうか。   (質問 (1) で、s_func*.mexw64 のみが直接影響いれば問題ないと予想しますが、    この予想は正しいでしょうか。)
以上、ご教授よろしくお願いいたします。

Best Answer

  • (1), (2) の回答ともに、S-Functionのインラインでビルドか、非インラインでビルドするかに依存します。 インラインビルド、非インラインビルドに関する説明が、下記URLに記載されています。
    ・S-Function とコード生成
    ・Inlining S-Functions
    ----------------------------------------------------
    (1),(2) について、それぞれ、下記で回答します。
    (1) S-Function を非インラインでビルドする場合、MEX-ファイルのみでビルドできます。 S-Function をインラインでビルドする場合は、ソースコードが必要です。
    (2) 上記文章を元に、下記の構成があると理解しています。
    フォルダ0:main モデル
    フォルダ1: s_func1.h (例えばパラメータが違って m=1 など定義されている), s_func1.mexw64
    フォルダ2: s_func1.h (例えばパラメータが違って m=2 など定義されている), s_func2.mexw64
    非インラインでビルドする場合は、MEX-ファイルが参照されるので影響はありません。 インラインでビルドする場合は、ソースファイルが参照されるため、問題が発生すると考えられます。 実際にコード生成して、動作を確認することで、より理解が深まるかと思います。まだお試し頂いていないようであれば、簡単なモデルでぜひ一度お試しください。