This browser is no longer supported.
Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.
Download Microsoft Edge
More info about Internet Explorer and Microsoft Edge
A
makefile
is a text file that contains instructions for how to compile and link (or
build
) a set of source code files. A program (often called a
make
program) reads the makefile and invokes a compiler, linker, and possibly other programs to make an executable file. The Microsoft program is called
NMAKE
.
If you have an existing makefile project, you have these choices if you want to edit, build, and debug in the Visual Studio IDE:
Create a makefile project in Visual Studio that uses your existing makefile to configure a .vcxproj file that Visual Studio will use for IntelliSense. (You won't have all the IDE features that you get with a native MSBuild project.) See
To create a makefile project
below.
Use the
Create New Project from Existing Code Files
wizard to create a native MSBuild project from your source code. The original makefile won't be used anymore. For more information, see
How to: Create a C++ Project from Existing Code
.
Visual Studio 2017 and later
: Use the
Open Folder
feature to edit and build a makefile project as-is without any involvement of the MSBuild system. For more information, see
Open Folder projects for C++
.
Visual Studio 2019 and later
: Create a UNIX makefile project for Linux.
In Visual Studio 2017 and later, the Makefile project template is available when the C++ Desktop Development workload is installed.
Follow the wizard to specify the commands and environment used by your makefile. You can then use this project to build your code in Visual Studio.
By default, the makefile project displays no files in Solution Explorer. The makefile project specifies the build settings, which are reflected in the project's property page.
The output file that you specify in the project has no effect on the name that the build script generates. It declares only an intention. Your makefile still controls the build process and specifies the build targets.
To create a makefile project in Visual Studio
From the Visual Studio main menu, choose
File
>
New
>
Project
and type "makefile" into the search box. If you see more than one project template, select from the options depending on your target platform.
Windows only
: In the Makefile project
Debug Configuration Settings
page, provide the command, output, clean, and rebuild information for debug and retail builds. Choose
Next
if you want to specify different settings for a Release configuration.
Choose
Finish
to close the dialog and open the newly created project in
Solution Explorer
.
To create a makefile project in Visual Studio 2015 or Visual Studio 2017
From the Visual Studio start page, type "makefile" in the
New Project
search box. Or, in the
New Project
dialog box, expand
Visual C++
>
General
(Visual Studio 2015) or
Other
(Visual Studio 2017) and then select
Makefile Project
in the Templates pane to open the project wizard.
In the
Application Settings
page, provide the command, output, clean, and rebuild information for debug and retail builds.
Choose
Finish
to close the wizard and open the newly created project in
Solution Explorer
.
You can view and edit the project's properties in its property page. For more information about displaying the property page, see
Set C++ compiler and build properties in Visual Studio
.
Makefile project wizard
After you create a makefile project, you can view and edit each of the following options in the
Nmake
page of the project's property page.
Build command line:
Specifies the command line to run when the user selects Build from the Build menu. Displayed in the Build command line field on the Nmake page of the project's property page.
Output:
Specifies the name of the file that will contain the output for the command line. By default, this option is based on the project name. Displayed in the Output field on the Nmake page of the project's property page.
Clean commands:
Specifies the command line to run when the user selects Clean from the Build menu. Displayed in the Clean command line field on the Nmake page of the project's property page.
Rebuild command line:
Specifies the command line to run when the user selects Rebuild from the Build menu. Displayed in the Rebuild all command line field on the Nmake page of the project's property page.
How to: Enable IntelliSense for Makefile Projects
IntelliSense fails in makefile projects when certain project settings or compiler options are set up incorrectly. Follow these steps to configure makefile projects so that IntelliSense works as expected:
Open the
Property Pages
dialog box. For more information, see
Set C++ compiler and build properties in Visual Studio
.
Select the
Configuration Properties
>
NMake
property page.
Modify properties under
IntelliSense
as appropriate:
Set the
Preprocessor Definitions
property to define any preprocessor symbols in your makefile project. For more information, see
/D
(Preprocessor Definitions)
.
Set the
Include Search Path
property to specify the list of directories that the compiler will search to resolve file references that are passed to preprocessor directives in your makefile project. For more information, see
/I
(Additional Include Directories)
.
For projects that are built using CL.EXE from a Command Window, set the
INCLUDE
environment variable to specify directories that the compiler will search to resolve file references that are passed to preprocessor directives in your makefile project.
Set the
Forced Includes
property to specify which header files to process when building your makefile project. For more information, see
/FI
(Name Forced Include File)
.
Set the
Assembly Search Path
property to specify the list of directories that the compiler will search to resolve references to .NET assemblies in your project. For more information, see
/AI
(Specify Metadata Directories)
.
Set the
Forced Using Assemblies
property to specify which .NET assemblies to process when building your makefile project. For more information, see
/FU
(Name Forced #using File)
.
Set the
Additional Options
property to specify other compiler switches to be used by IntelliSense when parsing C++ files.
Choose
OK
to close the property pages.
Use the
Save All
command to save the modified project settings.
The next time you open your makefile project in the Visual Studio development environment, run the
Clean Solution
command and then the
Build Solution
command on your makefile project. IntelliSense should work properly in the IDE.
See also
Using IntelliSense
NMAKE Reference
How to: Create a C++ project from existing code
Special characters in a makefile
Makefile contents and features