Software Index
Related Topics
Popular Trends
Trending Topics
Linux Software Utilities  


download download home home   report broken
important software information
company name:
Free Software Foundation, Inc.
license: Freeware
minimum requirements: · Perl
functional limitations:
Cons description

Cons is a Software Construction System.

Cons is a system for constructing, primarily, software, but is quite different from previous software construction systems. Cons was designed from the ground up to deal easily with the construction of software spread over multiple source directories. Cons makes it easy to create build scripts that are simple, understandable and maintainable. Cons ensures that complex software is easily and accurately reproducible.

Cons uses a number of techniques to accomplish all of this. Construction scripts are just Perl scripts, making them both easy to comprehend and very flexible. Global scoping of variables is replaced with an import/export mechanism for sharing information between scripts, significantly improving the readability and maintainability of each script.

Construction environments are introduced: these are Perl objects that capture the information required for controlling the build process. Multiple environments are used when different semantics are required for generating products in the build tree. Cons implements automatic dependency analysis and uses this to globally sequence the entire build. Variant builds are easily produced from a single source tree. Intelligent build subsetting is possible, when working on localized changes. Overrides can be setup to easily override build instructions without modifying any scripts. MD5 cryptographic signatures are associated with derived files, and are used to accurately determine whether a given file needs to be rebuilt.

While offering all of the above, and more, Cons remains simple and easy to use. This will, hopefully, become clear as you read the remainder of this document.

Why Cons? Why not Make?

Cons is a make replacement. In the following paragraphs, we look at a few of the undesirable characteristics of make--and typical build environments based on make--that motivated the development of Cons.

Build complexity

Traditional make-based systems of any size tend to become quite complex. The original make utility and its derivatives have contributed to this tendency in a number of ways. Make is not good at dealing with systems that are spread over multiple directories. Various work-arounds are used to overcome this difficulty; the usual choice is for make to invoke itself recursively for each sub-directory of a build. This leads to complicated code, in which it is often unclear how a variable is set, or what effect the setting of a variable will have on the build as a whole. The make scripting language has gradually been extended to provide more possibilities, but these have largely served to clutter an already overextended language. Often, builds are done in multiple passes in order to provide appropriate products from one directory to another directory. This represents a further increase in build complexity.

Build reproducibility

The bane of all makes has always been the correct handling of dependencies. Most often, an attempt is made to do a reasonable job of dependencies within a single directory, but no serious attempt is made to do the job between directories. Even when dependencies are working correctly, make's reliance on a simple time stamp comparison to determine whether a file is out of date with respect to its dependents is not, in general, adequate for determining when a file should be rederived. If an external library, for example, is rebuilt and then ``snapped'' into place, the timestamps on its newly created files may well be earlier than the last local build, since it was built before it became visible.

Variant builds

Make provides only limited facilities for handling variant builds. With the proliferation of hardware platforms and the need for debuggable vs. optimized code, the ability to easily create these variants is essential. More importantly, if variants are created, it is important to either be able to separate the variants or to be able to reproduce the original or variant at will. With make it is very difficult to separate the builds into multiple build directories, separate from the source. And if this technique isn't used, it's also virtually impossible to guarantee at any given time which variant is present in the tree, without resorting to a complete rebuild.


Make provides only limited support for building software from code that exists in a central repository directory structure. The VPATH feature of GNU make (and some other make implementations) is intended to provide this, but doesn't work as expected: it changes the path of target file to the VPATH name too early in its analysis, and therefore searches for all dependencies in the VPATH directory. To ensure correct development builds, it is important to be able to create a file in a local build directory and have any files in a code repository (a VPATH directory, in make terms) that depend on the local file get rebuilt properly. This isn't possible with VPATH, without coding a lot of complex repository knowledge directly into the makefiles.. The GNU Operating System. Publisher of Cons, Author of Cons 2.3.0. Cons is a Software Construction System. Cons is a system for constructing, primarily, software, but is quite different from previous software construction systems. Cons was designed from the

Multiple - Software - Simple - Create - Directories - Directory - Files - Easily - Build - Scripts - Dependencies - Complex - Builds - Repository - Without - Environments - Variant - These - Cons - Publisher Of Cons - Author Of Cons 2 3 0 - Vpath - Variants
Similar software
carrot (Popularity: ) : carrot is a messaging queue framework for Django, built on top of py-amqplib. Before you start playing with carrot, you should read the excellent article on RabbitMQ under python by Jason: Rabbits and warrens.

.. _`Rabbits and warrens`:


You can ...

Cluttermm Tutorial (Popularity: ) : Cluttermm Tutorial no longer comes with its own script.

To generate the build environment within a fresh checkout, run:

autoreconf --install --force


The simplest way to compile this package is:

1. `cd' to the directory containing the package's source code and type ...

User reviews

Write a review:
1 2 3 4 5 6 7 8 9 10
1=poor 10=excellent
Write review*
Your name*
  (Comments are moderated, and will not appear on this site until the editor has approved them)
Similar scripts
.NET Framework Overview (Popularity: ) : .NET Framework Overview is a reference guide which gives information regarding ASP.NET. This article describes about its three parts. It gives the brief description about the .NET pros and .NET cons with some important points. This article is easily understood ...
Building Mobile Web Applications with .NET Mobile Web SDK & ASP.NET (Popularity: ) : Internet and mobile phones changed the world a lot interms of fastness and accuracy, this tutorial is one such milestone through which the author explains the creation of web applications with .NET Mobile web SDK and ASP.NET. The author discusses ...
Client Side Scripting Techniques for Intranets with VBScript (Popularity: ) : This web based article will be more beneficial for the intranet systems to handle all functions with VBScript support. From the provided performance monitoring report, you will understand the pros and cons in VBscript and JScript implementation on intranet. And ...
Comparison of Cold Fusion and PHP (Popularity: ) : Several newsgroup postings that outline the pros and cons of Cold Fusion and PHP and compare them on Platform, Language, Database, File-System Support and more.
DataSets, Web Services, DiffGrams, Arrays, and Interoperability (Popularity: ) : DataSets, Web Services, DiffGrams, Arrays, and Interoperability is an atricle which deals with the pros and cons of the dataset objects and web services. You can get more information about DiffGram which is a XML format with the help of ...
Observation on XML core services - MSXML 4.0 RTM (Popularity: ) : This is a tutorial for providing more information on MSXML 4.0 RTM. The author details on both pros and cons of this technology for users references. This tutorial provides information on extra new functionalities, extra features, performance developments, side by ...
ReviewPost PHP Pro (Popularity: ) : This script lets your site's users post reviews of any items, complete with a description, pros and cons, rating and a photo with auto-thumbnailing. Organize your reviews into unlimited categories and subcategories and display the latest and most popular reviews ...
ReviewPost Pro (Popularity: ) : ReviewPost Pro is a reviewing system and is a simple script based on php. It provides ability to amass collection of users opinions about products. Users can enter pros and cons for products. Users can also review existing or new ...
The Data Access Dilemma (Popularity: ) : After reading this online article the beginners can learn about the different implementations of data access methodologies. Further this article describes the pros and cons of this concept. The author suggests ADO as a good choice of data access. The ...
space125: Almost equally spaced points in logarithmic space (Popularity: ) : Suppose we need to generate points equally spaced in logarithmic space. This is often useful with semilogx, semilogy, or loglog plots and can be easily accomplished by the logspace command. Let's generate 10 values between 1 and 1000 equally spaced ...

Rate me
supported os's
downloads 23
version 2.3.0
size in Kb 225
user rating 5/10
our rating 0 Stars
share info
Recommend Cons
Report spyware
New Software
Popular Software
Latest Reviews