Intel® Fortran Compiler 17.0 Developer Guide and Reference

Using Makefiles to Compile Your Application

This topic describes 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* or OS X*

To run make from the command line using the Intel® Fortran 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

Then you can compile 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 . For example, if your project is your_project.mak, you can use the following syntax:

nmake /f [makefile_name.mak] FPP=[compiler_name.exe] LINK32=[linker_name.exe]
For example:
prompt> nmake /f your_project.mak FPP=ifort.exe LINK32=xilink.exe

Argument

Description

/f

The nmake option to specify a makefile.

your_project.mak

The makefile to use to generate object and executable files.

FPP

The preprocessor/compiler that will generate object and executable files. (The name of this macro may be different for your makefile.)

LINK32

The linker that will be used.

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

Generating Build Dependencies for Use in a Makefile

Use the gen-dep compiler option to generate build dependencies for a compilation.

Build dependencies include a list of all files included with INCLUDE statements and .mod files accessed with USE statements. The resulting output can be used to create a makefile to with the appropriate dependencies resolved.

Consider a source file that contains the following:

 module b
 include 'gendep001b.inc'
 end module b

 program gendep001
 use b
 a_global = b_global
end

When you compile the source using the gen-dep option, the following output is produced:

 b.mod : \
 gendep001.f90
gendep001.obj : \
 gendep001.f90 gendep001b.inc

This output indicates that the generated file b.mod depends on the source file gendep001.f90. Similarly, the generated file gendep001.obj depends on the files gendpe001.f90 and gendep001b.inc.