Get a command line to build the current project. This is mainly intended for internal use by the CTest module.

              [CONFIGURATION <config>]
              [PARALLEL_LEVEL <parallel>]
              [TARGET <target>]
              [PROJECT_NAME <projname>] # legacy, causes warning

Sets the given <variable> to a command-line string of the form:

<cmake> --build . [--config <config>] [--parallel <parallel>] [--target <target>...] [-- -i]

where <cmake> is the location of the cmake(1) command-line tool, and <config>, <parallel> and <target> are the values provided to the CONFIGURATION, PARALLEL_LEVEL and TARGET options, if any. The trailing -- -i option is added for Makefile Generators if policy CMP0061 is not set to NEW.

When invoked, this cmake --build command line will launch the underlying build system tool.

New in version 3.21: The PARALLEL_LEVEL argument can be used to set the --parallel flag.

build_command(<cachevariable> <makecommand>)

This second signature is deprecated, but still available for backwards compatibility. Use the first signature instead.

It sets the given <cachevariable> to a command-line string as above but without the --target option. The <makecommand> is ignored but should be the full path to devenv, nmake, make or one of the end user build tools for legacy invocations.


In CMake versions prior to 3.0 this command returned a command line that directly invokes the native build tool for the current generator. Their implementation of the PROJECT_NAME option had no useful effects, so CMake now warns on use of the option.