ccbuild - A strict developer's build utility - How it works

[ previous ] [ Contents ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ A ] [ B ] [ next ]

# `ccbuild` - A strict developer's build utility
Chapter 2 - How it works

To know how to work with `ccbuild` is of course the most important thing (if you want to). So here is a quick and simple review of the internals.

We will now consider what happens when `ccbuild` is called without any arguments.

First `ccbuild` will find all source files in the current directory (using the list of source extensions to find them.) All these files are scanned which gives an in memory list of include statements and whether it has a main function.

If it has a main function, it is considered a binary target: `ccbuild` will try to make a program from this.

To find all the object files that need to be linked to the main program, `ccbuild` will follow all local include statements (warning if any fail). Then it will scan all files in the same directory as the included files. If they are object targets (don't have a `int main` function) they will be compiled and linked to the main program.

The arguments needed to compile an object are gathered by the global includes. Using the ccResolutions file, for every global include the arguments are added.

The needed linker arguments (which would create the "not linking now" warning) are identified and kept back for later use when the program is actually linked. If anything goes wrong here, please mail me and hack the file `src/Compiler/countFirstLinkerArguments.cc` for the meantime. This file contains two simple lists for for options with and options without arguments.

[ previous ] [ Contents ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ A ] [ B ] [ next ]

`ccbuild` - A strict developer's build utility