In order to build a client program, you need to specify pretty many compiler options. Usually, such lengthy commands are stored in a special file Makefile. Then the compiler can be invoked via short calls of the make utility, which greatly saves your keyboard and fingers. Moreover, make examines the time stamps of the source code and included header files, so it rebuilds automatically your clients as soon as it sees something got changed.

Unfortunately, the syntax of the Makefile itself is not for the fearful beginners. Therefore, we offer rather elaborated Makefile building blocks, which enable the most common client building schemes. We start the explanation with a simplest case, requiring only a two-line Makefile:

Having prepared the Makefile this way, you can ask make to carry out various tasks:

make make all
Build all client programs. The highest compiler optimization level is on, plausibility checks are disabled.
make client_name ...
Build the specified client programs.
make ... Debug=y
Build the client programs with enabled plausibility checks and symbolic information for debugging. The binary files produced will have a suffix -d.
Hint: if you are going to test your client program with valgrind and your compiler is gcc, you will increase the probability of error discovery by setting and exporting an enviroment variable GLIBCXX_FORCE_NEW=1. This will disable the pool memory allocation used in polymake by default, see also C++ runtime library documentation.
Don't forget to revoke this setting when you are doing real problem computations, as it incurs rather high performance loss.
make ... Debug=profile [Profile=detailed]
Build the client programs prepared for run-time profiling (see gprof(1) documentation about details.) The binary files produced will have a suffix -p. Profile=detailed disables function inlining, which makes the profile much more fine-granulated, but the total performance worse; however, the rest compiler optimization is still on.
make ... Debug=timing
Build the client program with full optimization; define a preprocessor symbol POLY_TIMING. You may write code fragments protected by this symbol, for example, creating a stopwatch object at the beginning of the computation and printing the elapsed time at the end. The binary files will have a suffix -T.
make ... Debug=opt
Build the client programs optimized but also with symbolic information for the debugger. These monsters are sometimes needed when chasing for compiler optimization bugs. The binary files produced will have a suffix -dO3, unless you change the default optimization level.
make ... CXXFLAGS=... LDFLAGS=... CXXDEBUG=... CXXOPT=...
Override the settings stored in the Makefile. CXXFLAGS and LDFLAGS can contain additional compiler and linker options, as explained above.
CXXDEBUG controls the generation of symbolic information for the debugger; the default setting is -g, which is OK for gdb.
CXXOPT specifies the optimization level; the default setting is -O3, unless it was changed during the polymake installation.
make install [ client_name ... ]
Copies all (or only specified) clients to a proper location within the polymake installation tree, where they can be found by the rules (provided you have the write access permission there.)
make clean
Remove all binary files in the build directory.