Friday, 21 June 2013

Build learning notes

I remember when I started playing with Arduino a couple of years ago, I used their IDE which has an option called "build".  I guessed it meant building the executable program, but I never knew the exact meaning of it.  I did dig in but found that the IDE actually also does "make" behind the scene, but use some costmetic changes to hide the make process, but introduce something called "loop" in their main program/script, which I found confusing.

This time when I am reading Cmake, I found it also related to "build", so I take this opportunity to look more closely the real thing.

But after reading the following wiki, I am still confused, because I don't know what is the relation between build and make.  Is make part of build?




Software build - Wikipedia

In the field of computer software, the term software build refers either to the process of converting source code files into standalone software artifact(s) that can be run on a computer, or the result of doing so. One of the most important steps of a software build is the compilation process where source code files are converted into executable code.

In software versioning, the build number is often used as a versioning identifier subordinate to, and more finely graded than, the version number. For example, various iterations of an application might be called "Acme FooWare 6.0", but in the "Help > About" dialog, the exact iteration will be identified with a longer, unique identifier that includes both the version number and the build number (for example, Acme FooWare 6.0.3.2246).

While for simple programs the process consists of a single file being compiled, for complex software the source code may consist of many files and may be combined in different ways to produce many different versions.

The process of building a computer program is usually managed by a build tool, a program that coordinates and controls other programs. Examples of such a program are make, Gradle, ant, maven, SCons and Phing. The build utility needs to compile and link the various files, in the correct order. If the source code in a particular file has not changed then it may not need to be recompiled (may not rather than need not because it may itself depend on other files that have changed). Sophisticated build utilities and linkers attempt to refrain from recompiling code that does not need it, to shorten the time required to complete the build. Modern build utilities may be partially integrated into revision control programs like Subversion. A more complex process may involve other programs producing code or data for the build process.

Tiers of Software Builds: manual compiles on individual developer boxes (tier 1), manual compiles on shared build box (tier 2), automated daily compile (tier 3), automated daily install built using installation software (tier 4), automated daily install deployed to QA boxes (tier 5) Continuous integration, and automated testing of the build and automatic creation of an install.

.END

No comments:

Post a Comment