Building a Project from the Command Line

You can build a Visual C++ project from the command line without first exporting a makefile (MAKEFILE, or filename.mak) and using the NMAKE utility.

The basic command syntax is

msdev FileName [/MAKE "ProjectName – ConfigName | ALL"] [/REBUILD /CLEAN /NORECURSE /OUT LogFile /USEENV]

where FileName is the name of your project (.dsp) or workspace (.dsw) file.

For example, the following syntax deletes all intermediate files and then builds a project called MyProject:

msdev MyProject.dsp /MAKE "MyProject – Win32 Debug" /REBUILD

The following syntax builds a workspace that contains (at least) two projects, building the release configuration of MyProject1 and all configurations of MyProject2, and directing the build output to a file called MyWorkspace.log:

msdev MyWorkspace.dsw /MAKE "MyProject1 – Win32 Release" "MyProject2 – ALL" /OUT MyWorkspace.log

Note   Projects created in Visual C++ versions earlier than 5.0 must first be converted before you can build them from the command line. To convert a project, open it inside the development environment.

You can also build all configurations of a certain type within a single project, for example, if you have defined multiple types of Debug configurations. For more information, see "Building by Type of Configuration."

Tip   Type msdev /? /OUT FileName to pipe the command syntax to a file.

The /MAKE Option

The /REBUILD, /CLEAN and /NORECURSE options all modify the /MAKE option, and are meaningless without it. Also, unless you specify a FileName after msdev, any /MAKE options will be ignored. /MAKE requires at least one configuration.

Parameters

Parameter Description
FileName A valid workspace or project filename. Must have an extension of .dsp or .dsw.
ProjectName The project that contains the configurations you want to build. If Filename is a workspace file, ProjectName must be a part of that workspace.
ConfigName Any valid project configuration, or all configurations for a particular project. To build all configurations, simply type "ALL" for the configuration value (must be uppercase). Corresponds to the choices available from the Settings For drop-down list in the Project Settings dialog box.
LogFile Name of an optional file used to store the build output information (valid only with the /OUT option).

Options

Option Operation
/MAKE "projectname1 – configuration1 | projectname1 – configuration2 | projectname2 – configuration1 | ALL" Builds the specified configurations. The /CLEAN option modifies /MAKE so that the specified configurations are cleaned rather than built.
/? Displays usage information for the msdev command.
/CLEAN Deletes intermediate files created during the build process for the specified configuration(s); does not build the project configuration(s).
/REBUILD Cleans and builds the specified configuration(s), including all dependent projects. Takes precedence if both /CLEAN and /REBUILD are specified.
/NORECURSE Builds the specified project configuration(s) without building any dependent projects.
/OUT logfile Creates a log file for the build output, which includes such information as syntax errors and warnings. If you don't specify a filename, the build output information is displayed at the command prompt and is not saved to a file.
/USEENV Directs the build system to use environment variables for the current build session, rather than the directory settings specified on the Directories tab (Tools menu, Options command). The PATH, INCLUDE and LIB paths must be set correctly for the build to succeed when /USEENV is specified.
/EX MacroName Invokes the named macro (if the associated .dsm file is not loaded, this command will fail).

Tip   Type msdev /USEENV at the command line to launch Visual C++ and use the environment variables for the duration of that IDE session.

Building by Type of Configuration

For any single project, you can build all configurations of a certain type. The build system uses limited pattern matching to recognize the name of the configuration you specify.

For example, if your project contains Debug and Release configurations for both regular and UNICODE applications, you can build both configurations for only the UNICODE application by issuing the following command:

msdev MyProject.dsp /MAKE "MyProject – UNICODE" 

Or, if your project contains several types of Debug and Release configurations, you can build all of the Debug configurations:

msdev MyProject.dsp /MAKE "MyProject – DEBUG" 

This pattern matching gives you even more flexibility when customizing your batch builds.