簡體   English   中英

Matlab`mcc`:編譯可執行文件時要包括的所有m文件?

[英]Matlab `mcc`: All m-files to include when compiling executable?

我有一個Matlab腳本go.m ,它可以創建自定義對象並運行一系列仿真。 有興趣將其移植到Matlab許可證很少的其他網絡中。 我們的策略是將腳本編譯成獨立的* .exe,以便它可以在不使用許可證的情況下運行。 一旦我弄清楚了所有的繩索,Matlab編譯器運行時將安裝在目標系統上。

我設法使用命令行mcc來編譯TMW在線示例magicsquare 使用cygwin的bash:

$ cd ~/bin
$ ln -s "/c/Program Files/MATLAB/Single_R2015b/bin/mcc.bat" mcc
$ cd ~/tmp/magicSqr
$ mcc -m magicsquare.m
    # startup.m messages indicate that this launches Matlab
$ ./magicsquare.exe 5
Running C:\cygwin64\tmp\User.Name\mcrCache9.0\magics1\Users\User.Name\Documents\MATLAB\startup
m =  17  24   1   8  15
     23   5   7  14  16
      4   6  13  20  22
     10  12  19  21   3
     11  18  25   2   9

既是目錄規范. 和文件擴展名.exe是必需的。

我的下一步是在過程中推動成熟的go.m ,看看有什么go.m ,並找到最輕松的方法來處理它。 至少,繁瑣的操作是指需要最少的代碼修改的策略,這樣我就不必維護用於開發和移植到目標的單獨代碼庫。

mcc編譯工作: mcc -m go.m 但是,運行*.exe文件會導致在第一個可執行語句: profile off處損壞。 就像我說的那樣,在戰術上進行個性化編碼非常不愉快,因此我尋找了一種方法來標識運行mcc時要包括的所有文件。 兩個有希望的線索是inmemrequiredFilesAndProducts 但是,以上網頁也警告:

不要使用依賴關系報告來確定其他人運行特定文件需要哪些MATLAB代碼文件。 而是使用matlab.codetools.requiredFilesAndProducts函數。

看來 ,要避免依附報告是指從輸出mfiles inmem 通過檢查上述m文件可以證實這一點-該列表非常長,並且包括混淆甚至Matlab的which命令的功能:

>> which matricize
'matricize' not found.

唯一的其他候選用於識別M-文件包括從輸出FLIST requiredFilesAndProducts 它似乎包括我的自定義類的所有方法,以及c:\\Users\\User.Name\\Documents\\MATLAB\\ (我路徑中唯一的自定義文件夾)中駐留的所有調用的m文件。 但是,它肯定不包括構成上述錯誤的profile命令。

mcc識別所有m文件和/或其文件夾的最佳方法是什么? 然后使用條件執行來處理任何剩余的導致錯誤的語句是否合理(例如, if ~isdeployed; <...problematic statements...>; end if ~isdeployed; <...problematic statements...>; end if ~isdeployed; <...problematic statements...>; end嗎?

您可以參考此處的文檔頁面上的列表,以獲取有關不支持使用MATLAB Compiler和MATLAB Compiler SDK產品進行編譯的功能的信息: https : //www.mathworks.com/help/compiler/unsupported-functions.html

以下頁面還顯示了每個單獨工具箱與MATLAB Compiler的兼容性: https : //www.mathworks.com/products/compiler/supported/compiler_support.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM