У меня есть папка, в которой я определил несколько пользовательских сценариев. Эти сценарии используют функции и классы, определенные в таких наборах инструментов, как Communications Toolbox и DSP System Toolbox.
Когда я пытаюсь упаковать папку в набор инструментов, анализатор зависимостей не идентифицирует ни один из наборов инструментов, на которые полагаются сценарии. Как это исправить?
Например, если у меня есть только следующие строки внутри сценария Matlab, а также в файле функций Matlab, оба внутри папки, не должен ли MATLAB идентифицировать Parallel Computing Toolbox как необходимое дополнение при упаковке папки?
gcp('nocreate')
delete(gcp('nocreate'));
parpool("local", 1);
Я попытался посмотреть, может ли MATLAB указать зависимости, используя RequiredFilesAndProducts в моих сценариях, но даже это не смогло перечислить необходимые наборы инструментов.
Я также просмотрел следующие страницы MATLAB:
Я думаю, что это может произойти, если анализируемый код не находится на пути MATLAB. Я помещаю указанные вами строки в скрипт, а когда нет пути, requiredFilesAndProducts
перечисляет только MATLAB; когда скрипт находится на пути, я вижу это:
[a,b] = matlab.codetools.requiredFilesAndProducts('pkg/usesPctScript.m');
disp(struct2table(b))
Name Version ProductNumber Certain
______________________________ ________ _____________ _______
{'MATLAB' } {'9.12'} 1 true
{'Parallel Computing Toolbox'} {'7.6' } 80 false
{'MATLAB Parallel Server' } {'7.6' } 94 false
{'Polyspace Bug Finder' } {'3.6' } 164 false
Согласно документации, в разделе «Переносимость Toolbox» приложения «Package Toolbox» говорится:
Продукты — список продуктов MathWorks®, необходимых для вашего набора инструментов. Создавать этот список вручную.
Однако, когда я упаковываю папку как набор инструментов, я все еще не вижу эти наборы инструментов, идентифицированные как зависимости ---- что действительно является сутью проблемы, которую я пытаюсь решить.
Я предполагаю, что это «определенное» поле, являющееся ложным для всех других наборов инструментов, как-то связано с этим?
Я не эксперт в этом, но, читая документ, я думаю, что, к сожалению, вам нужно вручную заполнить часть «Продукты» «Переносимости Toolbox». Я думаю, что часть «Требования» касается вещей, отличных от продуктов MathWorks.
Я понимаю. Было бы очень полезно, если бы вы также могли связать документ, на который вы ссылались. Мой гугл-фу ничего полезного не выдал. Если бы вы могли предложить способ указать зависимые наборы инструментов в файле .prj, чтобы они устанавливались автоматически, было бы здорово!
Эта страница mathworks.com/help/matlab/matlab_prog/… . (Я никогда раньше не использовал эту функцию, поэтому мне пришлось искать документ, чтобы даже знать, с чего начать!). Нужно очень внимательно прочитать описание «Требования» и сравнить с «Переносимостью набора инструментов», в котором говорится «Продукты — список продуктов MathWorks®, требуемых вашим набором инструментов. Создайте этот список вручную».
Ладно, теперь я чувствую себя очень глупо. Я, должно быть, сто раз смотрел на эту страницу. Никогда не замечал раздел переносимости Toolbox или тот факт, что список продуктов MATLAB необходимо заполнять вручную. Это спасение - огромное спасибо!
Оказывается, хотя код действительно находился на пути MATLAB, я не вызывал эту функцию struct2table. Звонок дал мне тот же результат, что и вам. Вот и раскрыта одна загадка, спасибо!