Caching by FBtoC's build system

During compilation, FBtoC caches data in the source directory's build_temp folder. Reusing this data in subsequent builds allows some steps of compilation to be skipped. Builds subsequent to the first one are therefore faster. The caches affect the compilation phase only, not translation.

The caches are maintained as files in build_temp. If build_temp or its files are missing, FBtoC regenerates them. If you change certain critical FBtoC compilation settings, FBtoC invalidates the cached information, and regenerates it automatically during the next build.

FBtoC maintains two kinds of cached information.

Precompiled FB code
The compiled code is in a series of *.o files in build_temp. Each *.o file contains binary code derived from one or more FB source files. For example:
_0_TranslatedRuntime.o
...
_15_Loop_Statemen,Conditional.o
...
_19_Init,Main_,FBtoC,FBtoC.o

A *.o file is compiled from its matching C source (*.c and *.h files). If these are both unchanged since the last build, compilation can be skipped.

FBtoC uses special indicator files to vouch for the integrity of *.o files; their long names (like _0_TranslatedRuntime.c_9aee936b...1b85b8e50_10023_149.vch) encode the md5 checksum of the matching C source along with the current compiler settings.

Header information from the OS X frameworks
Also known as a precompiled header or pch, this cache is controlled by FBtoC settiings checkbox 'Use precompiled header'.
The cache, in a format private to the compiler, is in the folder build_temp/FBtoCPrefix.h.gch/


Both forms of caching are most effective when you do repeated builds for a single architecture and with the same FBtoC settings. This is typically the case during program development, for which fast compilation is especially desirable. The recommended development settings are shown below:

If, on the other hand, you change certain settings the entire program (and pch if enabled) must be recompiled.
The relevant FBtoC settings are:

Changing any of those settings invalidates all cached information at the next build.