Let's say we have models r1 and r2 where r1 is a model reference inside r2. When we generate code (Simulink coder - Generate code only) for r2, everything works fine and we get the artifacts. In the artifacts, we have a 'r2.bat' file in 'r2_grt_rtw\'.
- How to automate this such that the making of model references & shared libs i.e. executing 'slprj\grt\r1\r1.bat' & 'slprj\grt\_sharedutils\rtwshared.bat' becomes part of 'r2_grt_rtw\r2.bat' ??
- If the first question is not feasible then how can we add custom hooks into 'r2_grt_rtw\r2.bat' or 'r2_grt_rtw\r2.mk' through Simulink Coder, to achieve the execution of 'slprj\grt\r1\r1.bat', 'slprj\grt\_sharedutils\rtwshared.bat' & may be more model references batch scripts ?? My assumption is that hooks in a makefile can help us in executing make commands for referenced models.
ANSWER
Matlabsolutions.com provide latest MatLab Homework Help,MatLab Assignment Help for students, engineers and researchers in Multiple Branches like ECE, EEE, CSE, Mechanical, Civil with 100% output.Matlab Code for B.E, B.Tech,M.E,M.Tech, Ph.D. Scholars with 100% privacy guaranteed. Get MATLAB projects with source code for your learning and research.
- Through a suitable hook - like postCodeGen - you can programmatically construct a master script to call the individual makefiles / bat scripts.
- You can access the list of referenced models by querying 'buildInfo.ModelRefs'. BuildInfo is one of the auto-generated artifacts in the form of a MAT file, which you can load and access its data.
- Here's some pseudocode that will compose paths of Model Reference libraries (and rtwsharedlib)
% Extract referenced model info mdls = args.buildInfo.ModelRefs; % Find the path of the directory code generation was started from startDir = args.buildInfo.Settings.LocalAnchorDir; % Initialize empty cell for path info paths = cell(size(mdls)); % Additional Code for the Relative Directory % Determine your current working directory currentDir = pwd; % Remove the starting directory from the current directory, this will leave % only the path from the starting directory to the current folder. pathFromAnchor = currentDir(2+length(startDir):end); % Extract all the folders between the starting directory and the current % directory folders = strsplit(pathFromAnchor,'\'); % Create the relative path to the start directory based on the number of % folders between the start and current directories. relativePath = repmat('../',1,length(folders)); % If there are model references loop over them and construct the path for % each reference if ~isempty(mdls) for i = 1:length(mdls) libname = mdls(i).Name; fullpath = replace(mdls(i).Path,'$(START_DIR)\', relativePath); paths{i} = [fullpath,'\',libname]; end end
Comments
Post a Comment