A typical prototype command for building Charm++ from the source code is:
./build TARGET TARGET ARCHITECTURE [OPTIONS] where,
- is the framework one wants to build such as charm++ or AMPI.
- TARGET ARCHITECTURE
- is the machine architecture one wants to build for such as netlrts-linux-x86_64, pamilrts-bluegeneq etc.
- are additional options to the build process, e.g. smp is used to build a shared memory version, -j8 is given to build in parallel etc.
In Table A.1, a list of build commands is provided for some of the commonly
used systems. Note that, in general, options such as smp,
--with-production, compiler specifiers etc can be used with all targets.
It is advisable to build with
--with-production to obtain the best
performance. If one desires to perform trace collection (for Projections),
--enable-tracing --enable-tracing-commthread should also be passed to the
Details on all the available alternatives for each of the above mentioned
parameters can be found by invoking
./build --help. One can also go through the
build process in an interactive manner. Run
./build, and it will be followed by
a few queries to select appropriate choices for the build one wants to perform.
As mentioned earlier, one can also build Charm++ using the precompiled binary in a manner similar to what is used for installing any common software.
When a Charm++ build folder has already been generated, it is possible to
perform incremental rebuilds by invoking
make from the
inside it. For example, with a netlrts-linux-x86_64 build, the path
netlrts-linux-x86_64/tmp. On Linux and macOS, the tmp symlink
in the top-level charm directory also points to the tmp directory of the most
Alternatively, CMake can be used for configuring and building Charm++. You can
ccmake for an overview of available options.
Note that some are only effective when passed with
-D from the
command line while configuring from a blank slate. To build with all defaults,
cmake . is sufficient, though invoking CMake from a separate location
mkdir mybuild && cd mybuild && cmake ../charm) is recommended.