Clmp is a drop in replacement for cl that implements multi processor support for versions of Visual C++ that don't natively support it. Specifically, this is useful for versions older than Visual C++ 2008, where native support is present and functional.

To use, replace references to cl with clmp (typically by defining the CC environment variable.) Ensure that cl is invoked specifying multiple source files rather than a single file; for NMAKE Makefiles, this is easily done with Batch Mode inference rules (see Batch-Mode Rules). The -MP[n] option is supported and will not be passed to the underlying compiler.

Due to limitations in older compilers, single process execution will be used when multi process execution may be unsafe. This can occur if multiple processes need to write to the same file (when debugging information is generated in a PDB, when precompiled header files are generated, etc.) Performance can be enhanced by avoiding those operations except where necessary.


This software is licensed under the terms of the MIT license.


Latest stable precompiled Binary
Latest stable source code
Latest development precompiled binary
Latest development source code

System Requirements

To run clmp binaries, you need Windows NT 4 or newer.

To compile from source, you need Visual C++, version 2 or newer.

Build instructions

  1. Open a command prompt to your version of Visual C++ and set up your environment.
  2. Unpack and enter the clmp source tree.
  3. Most of the time, just run "nmake".

Compilation options

Compilation options can be used by passing arguments to NMAKE.

DEBUG=Enable debug code. Valid values are 0 (disabled) or 1 (enabled.) Default is 0.
MINICRT=Compile against Minicrt rather than Msvcrt. Valid values are 0 (disabled) or 1 (enabled.) If 1, minicrt.h and minicrt.lib must be in %INCLUDE% and %LIB% respectively. An alternative way to use Minicrt is to extract it into a crt subdirectory within the clmp directory, and it will be used automatically. Default is 0.
MSVCRT_DLL=Compile against the shared, DLL C runtime library, or the static version. Valid values are 0 (static C runtime), or 1 (shared C runtime.) Default is 1.
UNICODE=Compile a Unicode or ANSI version of the binary. Unicode is more useful on NT, but ANSI is required to run on Windows 95. Valid values are 1 (Unicode) or 0 (ANSI.) Default is 1.