Matlab coder: Multiple coder projects

3 views (last 30 days)
Michael
Michael on 27 Nov 2023
Answered: Sameer on 21 Aug 2024
I have a Matlab function that was used to generate c++ code ten years ago, and this C++ code is included in an existing C++ project. I have a few new Matlab functions that I want to generate C++ code for and include into the same C++ project. I don't want to regenerate code for this old Matlab function, I don't want to touch it at all. But if I generate code for my newest functions and try to include those into the same project I get redefinition errors. Coder allows me to add a namespace for the function I am generating code for, but not for the utility function files like rtwtypes.h so no matter what I do I get redefinition errors for the coder generated types.
The older code was generated column major and the new stuff will be generated row major, and i just don't want to have to go into my C++ project and modify ten year old code. Is there a way to get this done without having to include all Matlab functions in a single Coder project??

Answers (1)

Sameer
Sameer on 21 Aug 2024
Hi Michael,
From my understanding, you want to integrate new C++ code generated from your latest MATLAB functions into an existing project without redefinition errors, particularly from utility files like “rtwtypes.h”.
There are a few strategies you can employ:
1. Namespace Isolation for Types: Since the redefinition errors arise from common utility headers like “rtwtypes.h”, you can manually wrap the inclusion of these headers in namespaces. While MATLAB Coder doesn't directly support namespacing utility headers, you can create a wrapper header file for the new code that places these “includes” within a namespace.
For example, create a new header file “new_code_wrapper.h:
namespace NewCode
{
#include "new_generated_code.h"
}
2. Conditional Compilation: Use preprocessor directives to manage the inclusion of generated utility headers. This can help avoid redefinitions by ensuring that each header is only included once.
#ifndef NEW_RTW_TYPES_H
#define NEW_RTW_TYPES_H
#include "rtwtypes.h"
#endif
3. Separate Compilation Units: Compile your old and new MATLAB-generated code in separate units. This allows each compilation unit to manage its definitions independently by reducing conflicts.
4. Custom Build Scripts: If you're using a build system like “Cmake” or “Make, consider writing custom build scripts that handle the inclusion of headers and compilation of different modules, ensuring that conflicts are avoided.
Hope this helps!

Categories

Find more on MATLAB Coder in Help Center and File Exchange

Products


Release

R2023a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!