Compiling/Building

From OpenFOAMWiki

OpenFOAM uses wmake to perform compilation (building, linking) of its C++ source code into local assembly code.

wmake

Valid versions: OF version 14.png

wmake tips:

- all invocations can have an optional directory:

 wmake $FOAM_UTILITIES/mesh/manipulation/checkMesh
 wmake libso $FOAM_SRC/finiteVolume

- wmake all

 wmake all <dir>

will recursively build all applications in current or specified directory.

- wmake <target>, e.g.

  wmake Make/linux64Gcc4DPOpt/meshBb.o

will build just that taget

- distributed building: wmake comes with a simple scheduler, wmakeScheduler, which spawns a job on a free machine. It is currently set up to distribute only compilation of c,c++. Dependency building and linking gets done on the local machine.

It is set up with environment variables:

WM_SCHEDULER : the name of the scheduler to use

WM_HOSTS  : the list of cores to use

WM_NCOMPROCS : the number of parallel builds (usually the size of WM_HOSTS)

WM_COLOURS  : Optional OF version 15.png : per entry in WM_HOSTS the colour to use. This is used in 'setterm -foreground XXX' ; for this to work I have to set my TERM environment variable to 'linux'.


Example to build on 1 processor of dm and 4 processors of noisy:

Valid versions: OF version 141.png:

export WM_SCHEDULER=wmakeScheduler

export WM_HOSTS="dm:1 noisy:4"

export WM_NCOMPPROCS=$($WM_SCHEDULER -count)


Valid versions: OF version 14.png:

export WM_SCHEDULER=wmakeScheduler

export WM_HOSTS="(dm:0 noisy:1 noisy:2 noisy:3 noisy:4)"

eval "hosts=$WM_HOSTS"

export WM_NCOMPPROCS=${#hosts[@]}