# Using Makefiles to Compile Your Application

This topic describes the use of makefiles to compile your application. You can use makefiles to specify a number of files with various paths, and to save this information for multiple compilations.

## Using Makefiles to Store Information for Compilation on Linux*

To run make from the command line using the Intel® oneAPI DPC++/C++ Compiler, make sure that /usr/bin and /usr/local/bin are in your PATH environment variable.

If you use the C shell, you can edit your .cshrc file and add the following:

    setenv PATH /usr/bin:/usr/local/bin:$PATH

To use the Intel oneAPI DPC++/C++ Compiler, your makefile must include the setting `CC=icx` (for C), `CC=icpx` (for C++), or `CC=dpcpp` (for DPC++). Use the same setting on the command line to instruct the makefile to use the compiler. If your makefile is written for GCC*, you need to change the command line options that are not recognized by the compiler. Run make, using the following syntax:

    make -f yourmakefile

Where -f is the make command option to specify a particular makefile name.

## Using Makefiles to Store Information for Compilation on Windows*

To use a makefile to compile your source files, use the nmake command with the following syntax:

    nmake /f [makefile_name.mak] CPP=[compiler_name] [LINK32=[linker_name]

For C/C++ projects:

    prompt> nmake /f your_project.mak CPP=icx LINK32=link

-OR-

    prompt> nmake /f your_project.mak CPP=icx LINK32=xilink

For DPC++ projects:

    prompt> nmake /f your_project.mak CPP=dpcpp-cl LINK32=dpcpp-cl

### Note

if you have `link/xilink` specific options that are not accepted by `dpcpp-cl`, ensure any linker specific options are placed after the `/link` option. For example: `dpcpp test.obj <compiler options> /link <linker options>`

Argument | Description
--- | ---
/f | The nmake option to specify a makefile.
your_project.mak | The makefile used to generate object and executable files.
CPP | The preprocessor/compiler that generates object and executable files. (The name of this macro may be different for your makefile.)
LINK32 | The linker that is used.

The nmake command creates object files (.obj) and executable files () from the information specified in the your_project.mak makefile.

Parent topic: Using the Command Line

## See Also

Modifying Your makefile (Linux
Modifying Your makefile (Windows*)