How to create new global build configuration? M2M only allows creation of one on per-project base. I want a global one that is a copy of existing.
We have quite a complex project that consists of multiple libraries (sub-projects). We have to build for two targets with different memory footprint. The target with lower memory does not require all of the functionality, hence the need for a new build configuration, so that I can compile out unnecessary code.
Thanks for reply.
This method only allows creation of configuration on per project base.
Our system consist of multiple projects (built as libraries) and one common project that links it all up into single binary.
I really need to create a “global” configuration, same as, say, ARM_ELF_GCC_RELEASE. This way I will be able to use it across multiple projects and workspaces.
Not sure to understand your real need.
I guess now that you’re familiar with the build configuration mechanism of each project.
Can you explain more precisely what do you want to do?
An improvement to ease something you’re already able to do but with hundreds of clicks? Or something you can’t do today?
My workspace consists of 27 projects. All are go into final product (26 are built as libraries and last one as application that links in the rest).
I want a way to globally change the build configuration to be able to build same code differently. Same code is to run on different hardware with different memory on board. On one of the platforms, lots of functionality is not required and simply having it compiled in makes binary too large for the flash memory on board.
So, the idea is to change build configuration globally (for all projects in workspace) and re-build for different target. Then I will be able to exclude certain files from build, introduce custom defines, etc.
M2M only allows configuration change per project. This means, in my case I have to go and create, then populate new build configuration for each project in workspace.
I guess that you already know how to be sure to trigger the build of a given project (A) when another project (B) is built (using a predetermined Build Configuration)… (cf. Properties of project B, C/C++ General > Path And Symbols > References, where you can add a reference to a chosen build configuration of A)
DS automatically manages this kind of reference/dependency when a project dependency is checked (cf. Properties > Project References), but this may not fit with your use case, as soon as it assumes that a library project reference is always “active”, whatever is the build configuration.
However, it doesn’t cover the creation/populate use case…
To summarize your needs, DS should propose:
to add a build configuration to several project in one operation
to copy settings from a build configuration to another (at creation time or even maybe once it is created); a sort of import/export feature for build configuration settings (include paths/defined symbols/…).
Would also be nice to have some ability to set parameters that are global to particular configuration (will affect all projects at once). An example would be setting of a pre-processor symbol. I would like to set it in one place and all projects using this configuration would pick it up.
OK, evolutions requests are logged to be integrated in a future release.
We plan within the end of the year to start a big workshop to enhance the projects management and the build system, and this probably will be part of it.
While we are on the subject, can we add another “feature” request?
I would like to have an ability of “batch changing” project options. Same situation again – multiple projects in single workspace.
Some devices in the filed are using OpenAT 6.34, some 6.35. If I am to rebuild the code, there are two possible ways:
Use different build configuration as discussed
Select all projects, right-click, select property and change OpenAT Library options.
None of those are available, so, at the moment, I have to go through each project individually and change options.
OK, point logged.
BTW the way, we will have to make another enhancement before: add the capability to use different packages versions in build configurations. Today, package dependencies (Open AT OS or plug-ins, etc…) are “project-wide”: no way to have a build config using one OS version, and another config using a second one.