Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[cdt-dev] Suggested functionality for Build Configurations

Below are our suggestions, to date, for Build Configuration 
functionality.  The suggestions are applicable to the managed make 
builder as well as to any "automatic" builder that CDT should provide 
in the future.  Some of this functionality may already be in 1.2 or 
already planned for 2.0.

A Build Configuration should allow the user to:

o  Specify a target platform:  The build infrastructure should support
   multiple target platforms.  A single project should be able to 
   support configurations that target different platforms.
   As an aside, I haven't been able yet to decide exactly what the
   current CDT concept of "target" refers to.

o  Specify a tool set/chain:  The build infrastructure should support
   multiple tools set per target platform.  A single project should be
   able to support configurations that use different tool sets on the 
   same or different target platforms.  Note that providing project 
   converters to convert an existing project to support another 
   platform or tool set is not the same thing.  You may have a similar
   result to begin with, but thereafter the separate projects are more
   likely to diverge.

o  Override some of the tools in a tool set:  Tool sets define a 
   mapping of file extensions to tools.  The user should be able to 
   override or extend the default mapping and specify a tool, or 
   ordered set of tools, to be used with a file extension (or set of 
   file extensions).  This should be available at the Workspace, 
   Project, and Configuration level.

o  Specify tool command line options:  The user should be able to
   define default command line options per tool at the Workspace, 
   Project, and Configuration level.  The user should also be able to
   override the options for a specific source file.

o  Remove a source file from a configuration:  The user should be able
   to mark a source file as not to be built in a particular configuration.

o  Specify commands to be invoked before the build:  The user should be
   able to specify a script that runs before any of the other build steps.

o  Specify commands to be invoked after the build:  The user should be
   able to specify a script that runs after all of the other build steps.

o  Override building a particular source file:  The user should be able
   to specify that a tool (or set of tools) different than the default be
   used to build a particular source file.  The user should also be able
   to specify a script that runs before, instead of, or after, the 
   default tool for a particular source file.

o  Override the "Clean" script:  The user should be able to specify a
   script that runs before, instead of, or after, the default clean 
   script.

o  Use pre-defined and user-specified Build Macros in string tool options
   and scripts:  Build Macros are replaceable strings used in tool options
   that take a string value and in build scripts.  For example, a macro
   can be used that will be replaced by the configuration's output 
   directory.  In that way, changing the output directory property 
   automatically changes all of the uses of the build marco.
   See http://msdn.microsoft.com/library/default.asp?url=/library/en-us/
   vccore/html/_asug_macros_for_custom_build_commands.asp for an example 
   of the pre-defined build macros used in Microsoft Visual C++.

o  Specify an Intermediate Output directory as distinct from the Output
   directory:  The user may want to separate these outputs.  These two
   directories would default to the same directory.

o  Export the generated make file:  The user should be able to export the
   make file.  For example, to be used on a platform that does not support
   CDT.

o  Derive a new configuration from an existing configuration and have tool
   options carry over to the new configuration.  Since different tools of
   the same kind (e.g. C++ compilers) will likely define unique options,
   this goal is probably not 100% doable (without an n x n solution).  But
   CDT could define a set of "generic" options and values that could be 
   written/read by all tools of a kind and provide a very useful subset to
   the total solution.


Leo Treggiari
Intel Corp., Nashua, NH


Back to the top