MATLAB/Simulink: プロジェクトフォルダをプログラムで作成・パスの設定

MATLAB/Simulinkではプロジェクトを活用するのが何かと楽です。

ただ、毎回フォルダを作成したり、パスを設定するのに飽きてきましたので、プログラムを使って一発で設定できるようにしてみました。

使い方は

makePjFolders hoge 

とすると、hoge.prjとプロジェクト名をhogeにしてくれます。

ソースコード

GitHubはこちら

function makePjFolders(varargin)
% MAKEPJFOLDER プロジェクトのフォルダの作成・パス設定・プロジェクト生成
%
    PjName = "";
    if nargin > 0
        input_1 = varargin{1};
        if regexp(input_1, "^[a-zA-Z].*")
            PjName = input_1;
        else
            disp("先頭がアルファベット以外です。")
        end
    end
    
    folders = ["data", "docs\\emf", "figs", "models", "scripts", "libraries", "work\\cache", "work\\codegen"];
    PathedFolders = ["data",  "models", "scripts", "libraries"];

    %%
    currentDir = pwd;

    %%
    for ii = 1:numel(folders)
        folder = folders(ii);
        if isfolder(folder) == 0
            [status, ~, ~] = mkdir(folder);
            if status
                fprintf("%s is created.\n", folder)
            else
                fprintf("make %s is failed.\n", folder)
            end
        end
    end

    %% プロジェクト名の設定
    proj = matlab.project.createProject(currentDir);
    if PjName ~= ""
        proj.Name = PjName;
    end

    %% フォルダをPjに追加
    for ii = 1:numel(folders)
        folder = folders(ii);
        addFile(proj, folder)
    end

    %% パスを追加
    for ii = 1:numel(PathedFolders)
        folder = PathedFolders(ii);
        newfolderPath = addPath(proj, folder);
    end

    %% キャッシュ・コード生成フォルダの指定
    cacheDir   = sprintf("%s\\work\\cache",    proj.RootFolder);
    codeGenDir = sprintf("%s\\work\\codegen",  proj.RootFolder);
    proj.SimulinkCacheFolder  = cacheDir;
    proj.SimulinkCodeGenFolder= codeGenDir;

    %% プロジェクトファイル名の変更
    proj.close
    if PjName ~= ""
        PjFileName = PjName + ".prj";
        movefile("Blank_project.prj", PjFileName)
        proj = matlab.project.loadProject(currentDir);
    end

end