通过MATLAB API配置Polyspace时链接模型后配置重置问题
解决Polyspace链接Simulink模型后配置重置的问题
问题根源在于:polyspace.ModelLinkOptions(ModelName)会生成一个全新的默认配置对象,直接将其赋值给proj.Configuration会完全覆盖之前手动设置的所有参数,包括启用的Misra规则。
以下两种方案可解决该问题:
方案一:直接基于ModelLinkOptions配置参数
先创建ModelLinkOptions实例,再在这个对象基础上逐步设置自定义配置,避免覆盖:
ModelName = 'MyModel'; open_system(ModelName); proj = polyspace.Project; % 创建关联模型的配置对象 proj.Configuration = polyspace.ModelLinkOptions(ModelName); % 在此基础上设置自定义参数 proj.Configuration.TargetCompiler.Compiler = 'generic'; proj.Configuration.CodingRulesCodeMetrics.EnableMisraC3 = true; proj.Configuration.CodingRulesCodeMetrics.MisraC3Subset = 'mandatory-required';
方案二:迁移已有配置到ModelLinkOptions
如果已有预先配置好的polyspace.Options对象,可将需要的属性复制到ModelLinkOptions中,复用已有配置:
ModelName = 'MyModel'; open_system(ModelName); proj = polyspace.Project; % 先定义基础配置 baseOpts = polyspace.Options('C'); baseOpts.TargetCompiler.Compiler = 'generic'; baseOpts.CodingRulesCodeMetrics.EnableMisraC3 = true; baseOpts.CodingRulesCodeMetrics.MisraC3Subset = 'mandatory-required'; % 创建关联模型的配置对象 modelLinkOpts = polyspace.ModelLinkOptions(ModelName); % 复制自定义配置属性 modelLinkOpts.TargetCompiler = baseOpts.TargetCompiler; modelLinkOpts.CodingRulesCodeMetrics = baseOpts.CodingRulesCodeMetrics; % 赋值给项目 proj.Configuration = modelLinkOpts;
注意:ModelLinkOptions会自动读取Simulink模型中的部分配置(如代码生成路径、模型专属编译选项),无需手动设置,确保配置与模型生成的代码环境匹配。
内容的提问来源于stack exchange,提问作者Aidin
相关产品推荐
相关产品推荐

