MPC

What is MPC?
(
The Makefile, Project, and Workspace Creator)

A fragile build system may preclude you from supporting diversity. Diversity in terms of platform targets for your software enables you to keep your vendor options open. Makefile, Project, and workspace Creator was originally developed by OCI to assist the ACE and TAO open source development community in supporting multi-platform software.

Developing applications that span platforms (portable code) has the beneficial side effect of producing more robust implementations. It does this by keeping your developers close to the mainstream of language features. MPC minimizes the additional cost normally associated with supporting more than one platform.

MPC was originally developed for, is used with, and is delivered with the ACE and TAO open source code. However, MPC can be used in almost any situation as a tool, able to compliment and simplify your existing build environments. It's more than just a Makefile generator; it supports multiple versions of make (GNU, Microsoft, Borland, Automake), Visual C++ 6.0 and Visual Studio 2003, 2005 and 2008.

 

Why MPC?
Write once.... and build many.......

Maintaining multiple build tool files for a multi-platform project can be tedious, especially if it is constantly changing and evolving. A project may support GNU Makefiles, Visual Studio project files, Borland Makefiles, and many others. Adding or deleting files, changing project options or even changing the name of the target within your project will incur a time expense to modify each build tool file. Synchronization is a must to ensure the integrity of a build. A single location to store project specific information is needed to avoid repetitious, tedious modifications to multiple build tool files. Adding a new IDE should not be a source of concern and should not have a negative impact on the build process. Some Make systems such as GNUMake and Clearmake may not work well together, which will force you to choose between them. This should not happen. Many projects will benefit from the integration of more than one tool. The build environment should be inclusive, not mutually exclusive. This is where “Make-Project-Creator” (MPC) comes into the picture.

Get started using MPC documentation.

What users say about MPC.

For me the advantages are:

o    Debug and Release configurations automatically kept in step

o    Macros automatically consistent across vcprojs using an MPC base project.

o    mpc file is readable and maintainable, unlike vcproj files.

o    cvs diff on an mpc file produces meaningful output

o    Common stuff (e.g include dirs and macro switches) can be abstracted out to base projects.

o    At the flick of a switch I can move to a different version of Visual Studio.

o    I can privately use MPC to create a Makefile and check that the code compiles using GCC.

and from another satisfied user:

- You can comment the MPC files.  This is a great way to keep track of why certain build options are used (or not used).  This alone is worth the switch.

- You can support multiple versions of Visual Studio at the same time using the same MPC files.  We ran for a time using both VS2005 and VS2008.  We had it set up to link to different versions of Boost and ACE/TAO while we were making the switch.  This can be done using the specific feature of MPC.

- All execs can be built with the exact same build options.
- On my current project we build over 100 execs.  There was a feature they could never get working because of linking problems.  Once we moved to MPC, and therefore had consistent builds of all libs, the linking errors were solved.

- Changing a build option for all execs is very easy and error proof.
- Allows easy testing of compiler/linker switches.

- cvs conflicts on vcproj files is no longer a problem.  Since files do
not need to be listed in the MPC two different developers can add a file to cvs without causing merge problems on the vcproj file.

- It is easy to setup multiple sln files with pieces of a large project.
- Current project we have a ALL.mwc, Tests.mwc, CommandLineTools.mwc, GUI.mwc, KevinH.mwc, etc.

I have never heard of anyone switching to MPC and later wishing they had
not switched.



Quick Links:

 

© 2010 Object Computing, Inc.